带有可选属性的注释

5

我有一个这样的注释:

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

  Class<InstanceConverter> converter();

我想做的是使名称为必填项,而转换器为可选项。似乎注释的所有属性默认都是必需的。我如何使转换器为可选项?
我已经阅读了两篇关于注释的文章,但没有提及可选属性。
谢谢。
1个回答

10

在注解 @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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接