我有两种方法的注释
public class Question {
@AnnotationA(value = { @AnnotationB(message = "One"), @AnnotationB(message = "Two") })
public int methodOne() {
return 1;
}
@AnnotationA(value = { @AnnotationB(message = "One"), @AnnotationB(message = "Two") })
public int methodTwo() {
return 2;
}
}
我希望能够写
public class Question {
@AnnotationA(value = annoArray)
public int methodOne() {
return 1;
}
@AnnotationA(value = annoArray)
public int methodTwo() {
return 2;
}
public AnnotationB[] annoArray = { @AnnotationB(message = "One"), @AnnotationB(message = "Two") }
}
但是IntelliJ通知我
Annotations are not allowed here
位于annoArray
的位置。有其他方法可以做到这一点吗?
最佳答案
这是不可能的,因为注释必须是编译时间常数。但是,您至少有两种可能性:
您可以为AnnoationB值创建常量。
如果AnnotationB仅包含一个String并且您需要多个,则可以将AnnotationA的value成员定义为String [](也可以在此处定义Constants)
关于java - 无法声明注释数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42081840/