Java:通过反射复制父类字段到子类。
2016-09-07 13:57
405 查看
有些时候需要建立子类继承于父类,尤其是java里面很多类是用mybatis generator生成的。通过父类构造子类,好像很麻烦,要逐个字段进行赋值(反正我没有找到其他好办法)。
想到用反射复制的方式来实现。通过研究,做到了。主要是用了fastjson里面的东西。估计已经有其他类库实现了这个功能,可惜我不知道,只能自己搞。
View Code
性能结果为:
cache the reflection:120
1 1
10 7
100 53
1000 139
10000 634
感觉还行。呵呵
想到用反射复制的方式来实现。通过研究,做到了。主要是用了fastjson里面的东西。估计已经有其他类库实现了这个功能,可惜我不知道,只能自己搞。
@Test public void Test() throws InvocationTargetException, IllegalAccessException { BaseClass baseClass = new BaseClass(); SubClass subClass=new SubClass(); baseClass.setB(true); baseClass.setI(1010); baseClass.setIs(false); baseClass.setWhatname("fgq"); Integer i=0; List<Integer> ii=new ArrayList<Integer>(); ii.add(1); ii.add(10); ii.add(100); ii.add(1000); ii.add(10000); StopWatch stopWatch=new StopWatch(); stopWatch.reset();; stopWatch.start(); Copyer.Copy(baseClass, subClass); stopWatch.stop(); System.out.println("cache the reflection:"+String.valueOf(stopWatch.getTime())); for (int j = 0; j < ii.size(); j++) { i=0; stopWatch.reset();; stopWatch.start(); while ( i<ii.get(j)) { Copyer.Copy(baseClass, subClass); subClass.setBirthday(new Date()); i+=1; } stopWatch.stop(); System.out.println(String.format("%s %s",ii.get(j),String.valueOf(stopWatch.getTime()))); } System.out.println(JSON.toJSONString(subClass,SerializerFeature.PrettyFormat,SerializerFeature.UseISO8601DateFormat)); }
View Code
性能结果为:
cache the reflection:120
1 1
10 7
100 53
1000 139
10000 634
感觉还行。呵呵
相关文章推荐
- Java反射:通过父类对象调用子类方法
- 通过java反射获取任意对象的字段名及字段值
- java中通过反射遍历属性字段及值
- pojo类的属性与数据库表字段名一样时,java通过反射拼凑出相应的sql.
- java中反射机制通过字节码文件对象获取字段和函数的方法
- 通过反射,动态给字段复制
- java 通过子类怎么调用父类已经被重写的方法
- java中反射机制通过字节码文件对象获取字段和函数的方法
- java中复制对象通过反射或序列化
- Java中子类通过super来访问父类的成员变量
- Java-Reflection反射-获取包括父类在内的所有字段
- Java通过反射得到其属性的值包含父类属性
- 通过java反射获取任意对象的字段名及字段值
- 通过java反射获取任意对象的字段名及字段值
- java 反射 , 判断Class是否是某个类的子类或父类
- 子类通过父类的构造函数为自己的属性字段赋值
- 子类通过父类的构造函数为自己的属性字段赋值
- 通过JAVA反射获取父类的泛型
- java中复制对象通过反射或序列化
- Java反射获取private属性和方法(子类,父类,祖先....)