前言
今天Android移动端要加个新功能,所以回归Android程序员的身份.开发的过程中,发现了之前的代码写的有很多问题,真的应该把时间抽出来重构一下了.
其中有反射的一个坑,工具类某方法反射获取传入Model的属性值.但是当我把公共属性抽出来做基类的时候,发现获取不到基类的属性值了.原因是使用了getDeclaredFields();
分析
方法
功能
getFields()
获取所有public字段,包括父类字段
getDeclaredFields()
获取所有字段,public和protected和private,但是不包括父类字段
写个小方法验证一下下~
写两个类,里面定义三个字段,分别用public,protected,private修饰,
一个叫ParentModel,作为父类.
一个叫model,继承ParentModel
/**
* 用作父类
*/
public class ParentModel { private String p_privateField; public String p_publicField; protected String p_protectedField; }
/**
* 子类,继承上面定义的用作父类的ParentModel
*/
public class Model extends ParentModel{ private String privateField; public String publicField; protected String protectedField; }
ok,分别使用getFields()和getDeclaredFields()获取model的字段,循环打印出来.
Field[] fs = Mod