5

我有这样的注释:

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

  Class<InstanceConverter> converter();

我正在尝试做的是使 name 为必需,转换器为可选。默认情况下,注释的所有属性似乎都是必需的。如何使转换器成为可选?

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

谢谢。

4

1 回答 1

9

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

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

  String  name(); // mandatory

  Class<InstanceConverter> converter() default InstanceConverter.class; // optional
}
于 2012-09-17T12:18:23.743 回答