String.format () как константное выражение - PullRequest
0 голосов
/ 22 мая 2019

Можно ли как-нибудь получить приведенное ниже выражение для оценки как константного выражения?Я использую Java 11, если это помогает.

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

1 Ответ

0 голосов
/ 22 мая 2019

Нет, компилятор не может воспринимать это как константу времени компиляции (см. Также этот вопрос ).

Чтобы проиллюстрировать: используя манипулирование байт-кодом, можно изменить поведение String.format (), например, что возможно в модульном тестировании с PowerMock и подобными библиотеками. В этом случае String.format("hello %1$s","world") может вернуть что-то еще, кроме "Привет, мир".

Примечание: Я предполагаю, что вы имеете в виду как «константное выражение времени компиляции». (В противном случае вы можете просто определить переменную final foo = String.format(...), и переменная foo будет константой в следующем коде). Но такие константы не могут, например, использоваться в качестве значений аннотации.

...