无法声明注释数组

时间:2017-02-07 04:38:03

标签: java reflection annotations metaprogramming swagger

我有两种方法的注释

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

有不同的方法吗?

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为注释必须是编译时常量。但是你至少有两种可能性:

  1. 您可以为AnnoationB值创建常量。
  2. 如果AnnotationB只包含一个String而你需要多个,你可以将AnnotationA的值成员定义为String [](你也可以在这里定义常量)