Java 15 String.formatted(args): безопасно для использования с учетом локали?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java 15 String.formatted(args): безопасно для использования с учетом локали?

Сообщение Anonymous »

В Java до версии 15 самым простым способом форматирования строки было использование метода String.format(Locale, String, args). Также было сочтено лучшим вариантом использовать Locale.ROOT в качестве локали (если вы не хотите использовать конкретную локаль) вместо локали по умолчанию, которая могла бы вызвать проблемы, которые трудно отладить.
Теперь, начиная с Java 15, появился новый метод, доступный непосредственно в экземплярах String: String.formatted(args). Однако новый метод не позволяет передавать локаль. Внутри он использует класс java.util.Formatter, который на самом деле поддерживает локали, но также использует локаль по умолчанию (

Код: Выделить всё

Locale.getDefault(Locale.Category.FORMAT)
).
Теперь мне интересно, что либо что-то изменилось в JDK и больше нет проблем с использованием локали по умолчанию (я сомневаюсь, что это может быть правдой), ИЛИ Новый метод даже не предполагается использовать в контекстах, где важна локаль. Но тогда я не уверен, каковы рекомендации, когда использовать новый метод (если вообще).
Любые советы и рекомендации приветствуются!
UPD: Прочитав мой вопрос еще раз, а также рассмотрев ответ @tquadrat, я пришел к выводу, что использование Locale.ROOT, вероятно, связано не с использованием разных локалей в зависимости от текущего пользователя, а с больше похоже на защиту поведения приложения от случайных ошибок, вызванных тем, что JVM настроена с «неправильным» языковым стандартом — Locale.ROOT гарантирует, что приложение всегда будет выполнять форматирование строк одинаково, независимо от того, какой языковой стандарт используется по умолчанию. сервер и JVM. Это был бы вариант использования, который невозможно реализовать с помощью String.formatted. Однако, как указано в комментариях, авторы JDK могли ожидать этого ограничения, и тогда String.format с локалью по-прежнему является предпочтительным способом в тех случаях, когда требуется локаль.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ware-usage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»