关于java通过反射 获取/修改 对象属性值的一些注意事项

  1. getFields()与 getDeclaredFields()
    前者能够获取所有public字段,包括父类字段;
    后者可以所有public/protected/private类型的字段,但是不包括父类的字段。
    使用时根据自己的需求选择即可。

  2. 如何获取子类和父类的所有字段
    首先,model对象的所有属性值,即字段,通常都是定义为private,所以,只能通过getDeclaredFields()方法去获取;然后,递归循环每个子类的父类吧,getSuperclass()方法可以做到。

  3. 反射获取或者修改对象的属性值
    有两种方法可以做到,第一个就是获取到对应属性值的get/set方法;另外一种就是通过获取到对应的属性Field对象,然后调用其get/set方法。特别需要注意的是,由于字段都是private的,所以需要通过setAccessible(true)将其设置为可侵入的。

Guess you like

Origin blog.csdn.net/qq_41885819/article/details/117152547