带有可选属性的注释

时间:2012-09-17 12:16:25

标签: java annotations

我有一个这样的注释:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE})
public @interface MyAnnotation {
  String  name();

  Class<InstanceConverter> converter();

我正在尝试做的是需要名称和转换器可选。看来默认情况下需要注释的所有属性。如何使转换器可选?

我已经阅读了两篇关于注释的文章,似乎没有提到可选属性。

感谢。

1 个答案:

答案 0 :(得分:9)

您应该在注释@interface定义的字段声明语句的右侧添加default子句:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE})
public @interface MyAnnotation {

  String  name(); // mandatory

  Class<InstanceConverter> converter() default InstanceConverter.class; // optional
}