有什么办法可以使下面的表达式作为常量表达式求值?如果有帮助,我正在使用Java 11。
String.format("hello %1$s","world");
答案 0 :(得分:0)
否,编译器不能将此视为编译时常量表达式(另请参见this question)。
为了说明:使用字节码操作,可以修改String.format()的行为,例如使用PowerMock和类似库进行单元测试时,可以实现什么。在这种情况下,String.format("hello %1$s","world")
可能会返回“ hello world”以外的其他内容。
注意:
我假设您的意思是“编译时常量表达式”。 (否则,您只能定义变量final foo = String.format(...)
,而变量foo在下面的代码中将是一个常量)。但是这样的常数不能例如用作注释值。