小编nee*_*men的帖子

无法访问Java中字段的注释

我有注释

public @interface Equals {
String name() default "unknown";
}
Run Code Online (Sandbox Code Playgroud)

以及字段被 Equals 注解的类

public class TransportSearch {
@Equals(name="vin")
public String vin = null;
}
Run Code Online (Sandbox Code Playgroud)

我在另一个类中有一个方法

public String (TransportSearch transportSearch){
    Field[] fields = transportSearch.getClass().getDeclaredFields();

    String vin = null;

    for(Field field : fields){
        try {
            Equals annot = field.getAnnotation(Equals.class);

            if(annot!=null && annot.name().equals("vin")){
                try {
                    vin = (String) field.get(transportSearch);
                } catch (IllegalAccessException e){
                    e.printStackTrace();
                }
            }

        } catch(NullPointerException e) {
            e.printStackTrace();
        }
    }
    return vin;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,在这个方法中field.getAnnotation(Equals.class)返回 null,我不明白为什么?你能帮助我吗?

java reflection annotations

2
推荐指数
1
解决办法
2271
查看次数

标签 统计

annotations ×1

java ×1

reflection ×1