cglib 动态创建class 有史以来最简单例子

来源:互联网 发布:淘宝卖家一件代发流程 编辑:程序博客网 时间:2024/06/05 10:53

package com.auto.test;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import net.sf.cglib.beans.BeanGenerator;
import net.sf.cglib.beans.BeanMap;

public class Test2 {
 public static void main(String[] args) throws IllegalArgumentException,
   IllegalAccessException, InvocationTargetException {
  BeanGenerator generator = new BeanGenerator();

  generator.addProperty("name", String.class);
  Object o = generator.create();
  System.out.println(o.getClass());

  BeanMap b = BeanMap.create(o);
  b.put("name", "zhongjingwu");
  Class clazz = o.getClass();
  Method[] methods = clazz.getDeclaredMethods();
  Field[] fields = clazz.getDeclaredFields();
  for (int i = 0; i < fields.length; i++) {
   System.out.println(fields[i].getName());
  }
  for (int i = 0; i < methods.length; i++) {
   if (methods[i].getName().indexOf("get") == -1) {
    continue;
   }
   System.out.println(methods[i].invoke(o) + "");
  }

 }
}

原创粉丝点击