【发布时间】:2014-04-03 07:05:35
【问题描述】:
我有两个注释。第一个从第二个开始使用:
@Target({ })
@Retention(RUNTIME)
public @interface A {
String value() default "";
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface B {
A a() default ???;
}
@B 可以在没有任何属性的情况下使用的逻辑,但是,当然,这并不意味着(根据 Annotation 规范)它的属性会有空值。
从另一边@A.value() == "" 也符合我的逻辑。这意味着:
A a() default @A;
不适合我。
所以,我需要一个案例,当我可以确定 @B.a() 类似于“NO_VALUE”并且它应该受到最终用户的保护。
static final A NO_A = new A() {};
A a() default NO_A;
没有帮助:它没有被编译。
作为一种解决方法,我使用array:
A[] a() default {};
并在注解处理器中检查a属性的大小。
是否有其他选项可以将a() 标记为默认值以使其类似于“NULL”并摆脱数组样式?
【问题讨论】:
标签: java annotations