Java 父类属性 反射与注解

Field[] fields = object.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组

当使用上面方法获取类的属性时候仅仅会返回本身的属性,想要获取其父类属性可以使用下列代码

if(null==object) return;
Class clazz = object.getClass();
List fieldsList = new ArrayList();
while (clazz != null) {  // 遍历所有父类字节码对象
            Field[] declaredFields = clazz.getDeclaredFields();
            fieldsList.addAll(Arrays.asList(declaredFields));  //将`Filed[]`数组转换为`List<>`然后再将其拼接至`ArrayList`上
            clazz = clazz.getSuperclass();  // 获得父类的字节码对象
}

LimitKeyInfo attr$keyinfo = field.getAnnotation(LimitKeyInfo.class);

当使用上面方法获取注解的时候,假如字段在父类上则必须在注解类上增加 @Inherited ,参考代码:

/**
 * @Author Minco
 * @Date 8:44 2020-07-24
 * @Description 隐藏关键信息数据注解
 */


@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Inherited //元注解 只有加上这个子类才可以继承父类注解
public @interface LimitKeyInfo {


    public boolean limit()  default true;


}

你可能感兴趣的:(Java后端,java,反射,注解,父类)