读书人

动态实例化种

发布时间: 2012-09-25 09:55:58 作者: rapoo

动态实例化类

使用org.apache.commons.beanutils.BeanUtils 对类进行操作,需要对类进行实例化,如果要写一个通用的功能,则要实现动态实例化类,下面的例子

使用java反射机制对类进行实例化

首先是一个工具类,反射机制实现对属性赋值

public Object instance(Object o) throws Exception {if (o == null) {o = o.getClass().newInstance();}Field[] fields = getAllField(o);for (Field field : fields) {if (isLeaf(field)) {continue;}String filedName = field.getName().substring(1);Method[] methods = getAllMethod(o);for (Method me : methods) {String meth = me.getName();if (meth != null && "set".equals(meth.substring(0, 3)) && Modifier.isPublic(me.getModifiers()) && ("set" + Character.toUpperCase(filedName.charAt(0)) + filedName.substring(1)).equals(meth)) {Object fieldObject = null;if (isType(field)) {// 这里实现对特殊类型的实例化String className = field.getType().getName();fieldObject = this.getTypeInstance(className);} else {fieldObject = field.getType().newInstance();}ReflectMatch.fill(o, field, me, fieldObject);System.out.println(filedName);instance(fieldObject);break;}}}return o;}

?这样就是先了类的实例化,就可以使用beanutils的api对 属性.属性.属性.属性进行赋值

?

读书人网 >软件开发

热点推荐