在常量表达式中使用 String.join
Use of String.join in Constant Expression
我有一个很长的 String
常量用于注释,这个字符串本质上是一个逗号分隔的列表。我希望能够做的是:
String str = String.join(", ", "abc", "def", "ghi", "jkl");
@Annotation(str)
public void foo();
但是我收到错误 element value must be a constant expression
。我知道该表达式不符合 Java 对常量表达式的定义,但是,有没有办法向编译器断言 str
是常量?如果我能以上述方式编写代码,代码将更易于阅读和维护(实际列表在我的实际代码中要长得多)。
没有
常量表达式在语言规范中有 a precise definition,任何涉及方法调用的都不是常量表达式。
使它成为常量表达式的唯一方法是生成包含该方法结果的代码,对其进行编译,然后使用其中的 constant-valued 表达式。
我有一个很长的 String
常量用于注释,这个字符串本质上是一个逗号分隔的列表。我希望能够做的是:
String str = String.join(", ", "abc", "def", "ghi", "jkl");
@Annotation(str)
public void foo();
但是我收到错误 element value must be a constant expression
。我知道该表达式不符合 Java 对常量表达式的定义,但是,有没有办法向编译器断言 str
是常量?如果我能以上述方式编写代码,代码将更易于阅读和维护(实际列表在我的实际代码中要长得多)。
没有
常量表达式在语言规范中有 a precise definition,任何涉及方法调用的都不是常量表达式。
使它成为常量表达式的唯一方法是生成包含该方法结果的代码,对其进行编译,然后使用其中的 constant-valued 表达式。