在常量表达式中使用String.join

时间:2019-06-18 20:27:56

标签: java compile-time-constant 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是常量吗?如果我能以上述方式编写代码,则代码将更易于阅读和维护(实际列表在我的实际代码中要长得多)。

1 个答案:

答案 0 :(得分:4)

否。

在语言规范中,常量表达式具有a precise definition,涉及方法调用的任何内容都不是常量表达式。

使它成为常量表达式的唯一方法是生成包含该方法结果的代码,对其进行编译,然后使用该方法中的常量值表达式。