首先创建三个实体类,关系为依次继承
@Data
public class GrandFather {
//私有
private String grandFatherName;
//受保护的
protected String grandFatherAge;
//公共的
public String grandFatherSex;
//无修饰
String grandFatherAddress;
}
@Data
public class Father extends GrandFather{
//私有
private String fatherName;
//受保护的
protected String fatherAge;
//公共的
public String fatherSex;
//无修饰
String fatherAddress;
}
@Data
public class Son extends Father{
//私有
private String sonName;
//受保护的
protected String sonAge;
//公共的
public String sonSex;
//无修饰
String sonAddress;
}
getDeclaredFields()返回当前类的所有属性,不包含所继承类的属性
Field[] fields = Son.class.getDeclaredFields();
private java.lang.String com.qingnian.fanshe.domain.Son.sonName
protected java.lang.String com.qingnian.fanshe.domain.Son.sonAge
public java.lang.String com.qingnian.fanshe.domain.Son.sonSex
java.lang.String com.qingnian.fanshe.domain.Son.sonAddress
getFields()可获取当前类,以及所继承所有父类,父父类的公共属性
Field[] fields = Son.class.getFields();
public java.lang.String com.qingnian.fanshe.domain.Son.sonSex
public java.lang.String com.qingnian.fanshe.domain.Father.fatherSex
public java.lang.String com.qingnian.fanshe.domain.GrandFather.grandFatherSex
获取所有继承类全部属性的方法:
private static List<Field> getAllField(Object model) {
Class clazz = model.getClass();
List<Field> fields = new ArrayList<>();
//只要父类存在,就获取其类的属性到集合
while (clazz != null) {
fields.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
//获取其父类
clazz = clazz.getSuperclass();
}
return fields;
}
private java.lang.String com.qingnian.fanshe.domain.Son.sonName
protected java.lang.String com.qingnian.fanshe.domain.Son.sonAge
public java.lang.String com.qingnian.fanshe.domain.Son.sonSex
java.lang.String com.qingnian.fanshe.domain.Son.sonAddress
private java.lang.String com.qingnian.fanshe.domain.Father.fatherName
protected java.lang.String com.qingnian.fanshe.domain.Father.fatherAge
public java.lang.String com.qingnian.fanshe.domain.Father.fatherSex
java.lang.String com.qingnian.fanshe.domain.Father.fatherAddress
private java.lang.String com.qingnian.fanshe.domain.GrandFather.grandFatherName
protected java.lang.String com.qingnian.fanshe.domain.GrandFather.grandFatherAge
public java.lang.String com.qingnian.fanshe.domain.GrandFather.grandFatherSex
java.lang.String com.qingnian.fanshe.domain.GrandFather.grandFatherAddress