Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 您可以接受varargs作为注释中的值吗?_Java_Annotations_Variadic Functions - Fatal编程技术网

Java 您可以接受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

我想创建一个接受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.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。我不明白为什么这么多人都想澄清!