通过反射获取实体类的字段(包含父类)

首先创建三个实体类,关系为依次继承

@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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值