Теперь, начиная с 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
Мобильная версия