【问题标题】:Use of String.join in Constant Expression在常量表达式中使用 String.join
【发布时间】:2019-06-18 20:27:56
【问题描述】:

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

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

@Annotation(str)
public void foo();

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

【问题讨论】:

    标签: java compile-time-constant constant-expression


    【解决方案1】:

    没有。

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

    您可以使它成为一个常量表达式的唯一方法是生成包含该方法结果的代码,编译它,然后使用该方法的常量值表达式。

    【讨论】:

    猜你喜欢
    • 2014-07-04
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多