有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在注释中传递方法

我创建了如下注释

@Retention(RetentionPolicy.RUNTIME)
public @interface TestData
{
String[] values();

}

我在课堂上使用它,如下所示

@TestData({"test1","test2","test3"})

public void testMethod(String data) {
   //Some code here
}

我想做的是。。对于TestData注释,我想动态生成几个值并传递它。例如:

假设我有一个名为getData()的方法

public string[] getData() {
   //Code to return an array
   return array[];
}

现在我希望能够将getData()方法的值传递给@TestData注释。可能吗


共 (1) 个答案

  1. # 1 楼答案

    不,这是不可能的,注释上的值必须在编译时已知,因此不能使用方法的结果,因为只有运行程序才能知道结果

    这在JLS 9.7.1(ElementValue的描述,V)中进行了解释。这一段说:

    • 如果类型是primitive或String,则它必须是常量表达式(即编译时常量)
    • 如果类型为Class,则它必须是类文本
    • 如果类型是枚举,则它必须是枚举常量
    • 如果类型是数组,则上述规则适用于数组元素

    方法的返回值不是编译时常量