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

Java String.format()作为常量表达式,java,string.format,Java,String.format,有没有办法让下面的表达式作为常量表达式计算?如果有帮助的话,我正在使用Java11 String.format("hello %1$s","world"); 不,编译器不能将其视为编译时常量表达式(另请参阅) 举例说明:使用字节码操作,可以修改String.format()的行为,例如,使用PowerMock和类似库进行单元测试时可能出现的情况。在这种情况下,String.format(“hello%1$s”,“world”)可以返回除“hello world”之外的其他内容 注: 我假定您的

有没有办法让下面的表达式作为常量表达式计算?如果有帮助的话,我正在使用Java11

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

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

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

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

您的意思是希望字符串“hello world”被视为常量吗?它不是一个常量,它在运行时被插值。@DaveNewton我想在编译时实现这个功能(并且我没有绑定到String.format api)。我知道实现这一目标的一种方法是String x=“world”;字符串y=“你好”+x。。。这里y是一个常数,尽管它使用了一个变量。但我不想使用这种方法,因为我有很多变量要替换,并且希望有一个不同的解决方案。您试图解决的最终问题是什么?目前可能没有,但请查看此方法的潜在改进。