String.format() 作为常量表达式

abh*_*tia 5 java string.format

有什么方法可以让下面的表达式作为常量表达式进行计算?如果有帮助的话,我正在使用 Java 11。

String.format("hello %1$s","world");
Run Code Online (Sandbox Code Playgroud)

tkr*_*use 5

不,编译器不能将其视为编译时常量表达式(另请参阅此问题)。

为了说明这一点:使用字节码操作,可以修改 String.format() 的行为,例如使用 PowerMock 和类似库进行单元测试时可能发生的情况。在这种情况下String.format("hello %1$s","world"),可能会返回“hello world”之外的其他内容。

注意:我假设您的意思是“编译时常量表达式”。(否则你可以只定义一个变量final foo = String.format(...),变量 foo 在下面的代码中将是一个常量)。但是这样的常量不能用作注释值。