从枚举常量中获取注释值

时间:2016-12-05 09:20:34

标签: java enums annotations enumerator

我有一个枚举器和一个自定义注释,代表了枚举器的描述:

public @interface Description {

   String name() default "";

}

枚举:

public enum KeyIntermediaryService {
     @Description(name="Descrizione WorldCheckService")
     WORLDCHECKSERVICE,
     @Description(name="blabla")
     WORLDCHECKDOWNLOAD,
     @Description(name="")
     WORLDCHECKTERRORISM,
     // ...
}

如何从另一个类中获取枚举器描述?

1 个答案:

答案 0 :(得分:1)

点击链接Is it possible to read the value of a annotation in java?以生成以下代码 -

public static void main(String[] args) {
     for (Field field : KeyIntermediaryService.class.getFields()) {
         Description description = field.getAnnotation(Description.class);
         System.out.println(description.name());
     }
}

雅但是这段代码会产生一个NPE,除非@Robby在他的回答中指出你需要更改注释以@Retention(RetentionPolicy.RUNTIME)标记为Description

在此答案中陈述了这一点的原因 - How do different retention policies affect my annotations?