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 在下面的代码中将是一个常量)。但是这样的常量不能,例如用作注释值。
有什么方法可以让下面的表达式作为常量表达式求值吗?如果有帮助,我正在使用 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 在下面的代码中将是一个常量)。但是这样的常量不能,例如用作注释值。