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

标签 java compile-time-constant constant-expression

我有一个很长的 String 常量用于注释,这个字符串本质上是一个逗号分隔的列表。我希望能够做的是:

String str = String.join(", ", "abc", "def", "ghi", "jkl");

@Annotation(str)
public void foo();

但是我得到错误元素值必须是常量表达式。我知道该表达式不符合 Java 对常量表达式的定义,但是,有没有办法向编译器断言 str 是常量?如果我能以上述方式编写代码,代码将更易于阅读和维护(实际列表在我的实际代码中要长得多)。

最佳答案

没有。

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

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

关于java - 在常量表达式中使用 String.join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56656607/

相关文章:

Java : double to float type conversion is giving 'infinity' for larger values

c++ - 为什么引用上的 constexpr 函数不是 constexpr?

c++ - 为什么在 C++11 中取消了对逗号运算符在常量表达式中的限制?

java - 将 Python 分区生成器转换为 Java

JavaFx:如何正确触发 TableCell 中的 updateItem

haskell - 编译时的顶级表达式评估

将编译时常量字符串与字符代码来自#define 的字符连接起来

c++ - 如何使用 const 成员变量设置数组大小?

java - 将 nisNetgroupTriple 字符串转换为对象

c# - 在 C# 中将颜色定义为常量