有什么办法可以得到以下表达式以评估为恒定表达式?如果有帮助,我正在使用Java 11。
String.format("hello %1$s","world");
no,编译器无法将其视为编译时常数表达式(另请参见此问题(。
要说明:使用字节码操纵,可以修改string.format((的行为,例如在使用PowerMock和类似库的单位测试中,可以使用什么。在这种情况下,String.format("hello %1$s","world")
可以返回" Hello World"以外的其他东西。
注意:我认为您的意思是作为"编译时常数表达式"。(否则,您只需定义一个变量final foo = String.format(...)
,并且在以下代码中将是一个常数(。但是这样的常数不能例如用作注释值。