Класс FormatProcessor
- Все реализованные интерфейсы:
-
StringTemplate.ProcessorPREVIEW<String,,RuntimeException> StringTemplate.Processor.LinkagePREVIEW
public final class FormatProcessor extends Object implements StringTemplate.ProcessorPREVIEW<String,RuntimeException>, StringTemplate.Processor.LinkagePREVIEW
FormatProcessor — это предварительный API платформы Java. StringTemplate.ProcessorПРЕДПРОСМОТР строит результат String с использованием спецификаций Formatter и значений, найденных в StringTemplateПРЕДПРОСМОТР. В отличие от Formatter, FormatProcessorПРЕДПРОСМОТР использует значение из вложенного выражения, непосредственно следующего без пробелов за спецификатором формата. Например: FormatProcessor fmt = FormatProcessor.create(Locale.ROOT);
int x = 10;
int y = 20;
String result = fmt."%05d\{x} + %05d\{y} = %05d\{x + y}";
result будет "00010 + 00020 = 00030". Вложенные выражения без предшествующего спецификатора формата по умолчанию используют %s.
FormatProcessor fmt = FormatProcessor.create(Locale.ROOT);
int x = 10;
int y = 20;
String result1 = fmt."\{x} + \{y} = \{x + y}";
String result2 = fmt."%s\{x} + %s\{y} = %s\{x + y}";
result1 и result2 оба будут "10 + 20 = 30". Спецификация формата FormatProcessorПРЕДПРОСМОТР, используемая и исключения, выбрасываемые, такие же, как у Formatter.
Однако, существуют два ключевых отличия, связанных с позицией аргументов. Явное указание n$ и относительный индекс < приведут к исключению из-за отсутствия списка аргументов. Пробелы между спецификацией и вложенным выражением также вызовут исключение.
FormatProcessorПРЕДПРОСМОТР позволяет использовать разные языковые среды. Например:
Locale locale = Locale.forLanguageTag("th-TH-u-nu-thai");
FormatProcessor thaiFMT = FormatProcessor.create(locale);
int x = 10;
int y = 20;
String result = thaiFMT."%4d\{x} + %4d\{y} = %5d\{x + y}";
result будет " à¹à¹ + à¹à¹ = à¹à¹". Для повседневного использования доступен предварительно определенный FMT FormatProcessorПРЕДПРОСМОТР. FMT определяется с использованием Locale.ROOT. Пример:
int x = 10;
int y = 20;
String result = FMT."0x%04x\{x} + 0x%04x\{y} = 0x%04x\{x + y}";
result будет "0x000a + 0x0014 = 0x001E".- С:
- 21
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.StringTemplate.ProcessorПРЕДПРОСМОТР
StringTemplate.Processor.LinkagePREVIEW
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final FormatProcessorPREVIEW |
FMT |
Этот предварительно определенный экземпляр FormatProcessorПРЕДПРОСМОТР строит результат String используя локаль Locale.ROOT Locale. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static FormatProcessorPREVIEW |
create |
Создает новый FormatProcessorПРЕДПРОСМОТР с указанной локалью. |
MethodHandle |
linkage |
Создает MethodHandle, который, при получении значений из StringTemplateПРЕДПРОСМОТР, создает результат, эквивалентный тому, что предоставляет process(StringTemplate). |
final String |
process |
Создает String на основе фрагментов, спецификаций формата, найденных в фрагментах, и значений в предоставленном объекте StringTemplateПРЕДПРОСМОТР. |
Подробное описание полей
FMT
public static final FormatProcessorPREVIEW FMT
FormatProcessorПРЕВЬЮ экземпляр создаёт результат типа String с использованием Locale Locale.ROOT. Подробнее см. FormatProcessorПРЕВЬЮ. Пример: int x = 10;
int y = 20;
String result = FMT."0x%04x\{x} + 0x%04x\{y} = 0x%04x\{x + y}";
result будет равно "0x000a + 0x0014 = 0x001E". - См. также:
Подробное описание методов
create
public static FormatProcessorPREVIEW create(Locale locale)
FormatProcessorПРЕВЬЮ с использованием указанного локали.- Параметры:
-
locale-Locale, используемый для форматирования - Возвращает:
- новый экземпляр
FormatProcessorПРЕВЬЮ - Исключения:
-
NullPointerException- если локаль равна null
process
public final String process(StringTemplatePREVIEW stringTemplate)
String на основе фрагментов, спецификаций форматирования, найденных во фрагментах и значений в предоставленном объекте StringTemplateПРЕВЬЮ. Этот метод создаёт строку форматирования из фрагментов, собирает значения и оценивает выражение, как если бы вычислялось new Formatter(locale).format(format, values).toString(). Если встроенное выражение не предшествует спецификатору, то в формате вставляется %s.
- Определено в:
-
processв интерфейсеStringTemplate.ProcessorPREVIEW<String,RuntimeException> - Параметры:
-
stringTemplate- экземплярStringTemplateПРЕВЬЮ - Возвращает:
- созданная строка
String - Исключения:
-
IllegalFormatException- Если спецификатор форматирования содержит неверный синтаксис, спецификатор форматирования несовместим с заданными аргументами, спецификатор не сразу следует за встроенным выражением или другие неверные условия. Для описания всех возможных ошибок форматирования см. раздел «Подробное описание» класса Formatter в спецификации класса Formatter. -
NullPointerException- если stringTemplate равно null - См. также:
linkage
public MethodHandle linkage(List<String> fragments, MethodType type)
MethodHandle, который, при получении значений из StringTemplateПРЕВЬЮ, произведёт результат, эквивалентный результату, полученному с помощью process(StringTemplate). Этот MethodHandle используется FMT и подобными методами для выполнения более специализированного составления результата. Эта специализация выполняется путём предварительного анализа фрагментов и типов значений StringTemplateПРЕВЬЮ. Выражения шаблона обработки могут быть специализированы, когда процессор имеет тип StringTemplate.Processor.LinkageПРЕВЬЮ и извлечён из статической константы, как и FMT (static final FormatProcessor).
Другие FormatProcessorsПРЕВЬЮ могут быть специализированы при хранении в static final. Например:
FormatProcessor THAI_FMT = FormatProcessor.create(Locale.forLanguageTag("th-TH-u-nu-thai"));
THAI_FMT теперь будут производить специализированные MethodHandles посредством linkage(List, MethodType). Дополнительную информацию см. в process(StringTemplate).- Определено в:
-
linkageв интерфейсеStringTemplate.Processor.LinkagePREVIEW - Параметры:
-
fragments- фрагменты шаблона строки -
type- тип метода, включает в себя получателя StringTemplate и типы значений - Возвращает:
-
MethodHandleдля процессора, применённого к шаблону - Исключения:
-
IllegalFormatException- Если спецификатор форматирования содержит неверный синтаксис, спецификатор форматирования несовместим с заданными аргументами, спецификатор не сразу следует за встроенным выражением или другие неверные условия. Для описания всех возможных ошибок форматирования см. раздел «Подробное описание» класса Formatter в спецификации класса Formatter. -
NullPointerException- если фрагменты или тип равны null - См. также:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/FormatProcessor.html
FormatProcessorтолько при включенных предварительных функциях.