Это одна из самых старых функций обработки текста Java , существовавшая задолго до того, как в Java была добавлена поддержка строк формата C:
String param1 = "google.com", param2 = "ACCESS DENIED";
String formatted = MessageFormat.format(
"Connection to {0} failed with {1} status", param1, param2);
System.out.println(formatted);
Метод, использованный вышеэто уже удобный метод для
String param1 = "google.com", param2 = "ACCESS DENIED";
String f = "Connection to {0} failed with {1} status";
MessageFormat format = new MessageFormat(f);
String formatted = format.format(new Object[] {param1, param2});
System.out.println(formatted);
, который устраняет необходимость объявлять другой вспомогательный метод static
самостоятельно.
Когда в Java 5 была добавлена функция форматирования в стиле C,в класс String
были помещены удобные методы, однако я бы не хотел называть формат в стиле C «стандартным стилем java / C». Когда вы посмотрите на API java.text
с датой, номером, выбором и форматером сообщения и тем, как вы можете встроить первое в второе, вы заметите, насколько оно мощнее, чем новая функция java.util.Formatter
в Java 5, в то время как естьк сожалению, нет взаимодействия между этими функциями.
Еще более новый java.time
API имеет собственные средства форматирования / синтаксического анализа, но обеспечивает мост к java.text
API, хотя вы не можете встроить их в MessageFormat
так же. И он не обеспечивает никакого взаимодействия с java.util.Formatter
API.
Таким образом, API форматирования Java представляет собой набор изолированных функций. Но учтите, что когда вы собираетесь использовать эти сообщения с API ведения журнала, высоки шансы, что он уже использует MessageFormat
при входе в систему с параметрами, такими как logger.log(Level.ERROR, "Connection to {0} failed with {1} status", param1, param2);
. В этом отношении вы должны проверить документацию API ведения журнала.