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

时间:2019-05-21 23:43:40

标签: java string.format

有什么办法可以使下面的表达式作为常量表达式求值?如果有帮助,我正在使用Java 11。

String.format("hello %1$s","world");

1 个答案:

答案 0 :(得分:0)

否,编译器不能将此视为编译时常量表达式(另请参见this question)。

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

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