我有两种方法的注释

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/

10-10 04:07