apche 反射api的使用心得

最近在因为在反射的使用过程中愈发觉得java的原生反射api在大部分的场景下比较繁琐。

于是换成了apache的反射包,感觉apache 的反射包爽多了。

以下是代码示例

实体类

@Data @Accessors(chain = true) public class StudentEntity {

private String name;
private int age;

public static StudentEntity create张三(){
    return new StudentEntity().setName("张三").setAge(12);
}

public static StudentEntity create李四(){
    return new StudentEntity().setName("李四").setAge(13);
}

} 首先使用java原生的反射api进行读取

public static int getAgeByNativeReflect() throws ReflectiveOperationException { // 得到张三的年龄 StudentEntity studentEntity=StudentEntity.create张三(); // 通过原生反射获取张三的年龄 Class clazz=studentEntity.getClass(); Field field = clazz.getDeclaredField("age"); field.setAccessible(true);// 设置可读性 Object ageObj= field.get(studentEntity); return (int) ageObj; } 会发现模板代码非常多。

再来看看apache的反射包代码

public static int getAgeByApacheReflect() throws ReflectiveOperationException { // 得到张三的年龄 StudentEntity studentEntity=StudentEntity.create张三(); return (int) FieldUtils.readDeclaredField(studentEntity,"age",true); } 感觉整个页面都变得清爽起来了。

运行结果如下

apache设值代码亦如下所示:

FieldUtils.writeField(studentEntity,"age",15,true); 原文来自四川码农csdn

钟长森
请先登录后发表评论
  • latest comments
  • 总共0条评论

川公网安备 51010702002018号