Java 您可以接受varargs作为注释中的值吗?
我想创建一个接受varargs作为默认值的方法注释。以下是用例:Java 您可以接受varargs作为注释中的值吗?,java,annotations,variadic-functions,Java,Annotations,Variadic Functions,我想创建一个接受varargs作为默认值的方法注释。以下是用例: @Authorize(Role.PRESIDENT, Role.ARMY_GENERAL, Role.INSANE_MADMAN) public void secureMethod() { // Code to launch nuclear missile (ok, not really) } 这是我的注释界面: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType
@Authorize(Role.PRESIDENT, Role.ARMY_GENERAL, Role.INSANE_MADMAN)
public void secureMethod() {
// Code to launch nuclear missile (ok, not really)
}
这是我的注释界面:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Authorize {
Role[] value() default {}; // Tempted to say Rights... value() default {}
}
这可能吗?如果可能,怎么可能?不可能,因为vararg只对构造函数/方法参数有效,而对成员无效
而且,即使您可以使用varags定义
value()
,在内部,这些值也会转换为数组,因此您不会获得太多收益。在这里使用数组很好。是的,您可以只使用文本数组
@Authorize( {Role.PRESIDENT, Role.ARMY_GENERAL, Role.INSANE_MADMAN } )
public void secureMethod() {
...
}
JUnit的@SuiteClasses就是一个常见的例子,它做同样的事情
编辑
@SuppressWarnings
如果有多个值,也会接受数组:
@SuppressWarnings({ "rawtypes", "unchecked" })
我没有意识到使用阵列有那么容易。完美的谢谢。所以答案是:不。接受的答案应该来自@Yovkow。我不明白为什么这么多人都想澄清!