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

String.format() as a constant expression

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

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

不,编译器不能将其视为 compile-time 常量表达式(另请参阅 this question)。

举例说明:使用字节码操作,可以修改 String.format() 的行为,例如unit-testing 使用 PowerMock 和类似库可以实现什么。在那种情况下 String.format("hello %1$s","world") 可以 return 除了 "hello world".

注意: 我假设你的意思是 "compile-time constant expression"。 (否则你可以只定义一个变量 final foo = String.format(...),变量 foo 在下面的代码中将是一个常量)。但是这样的常量不能,例如用作注释值。