Интерфейс StringTemplate.Processor<R, E extends Throwable>
- Тип параметров:
-
R- Тип результата обработки процессора -
E- Тип выбрасываемого исключения
- Все известные реализующие классы:
FormatProcessorPREVIEW
- Вложенный интерфейс:
StringTemplatePREVIEW
- Функциональный интерфейс:
- Это функциональный интерфейс и поэтому может использоваться в качестве целевого назначения лямбда-выражения или ссылки на метод.
@FunctionalInterface public static interface StringTemplate.Processor<R,E extends Throwable>
Processor — это API предварительного просмотра платформы Java. process(StringTemplate) используется для проверки и составления результата с использованием фрагментов StringTemplate'sПРЕДПРОСМОТР и списков значений. Например:
class MyProcessor implements Processor<String, IllegalArgumentException> {
@Override
public String process(StringTemplate st) throws IllegalArgumentException {
StringBuilder sb = new StringBuilder();
Iterator<String> fragmentsIter = st.fragments().iterator();
for (Object value : st.values()) {
sb.append(fragmentsIter.next());
if (value instanceof Boolean) {
throw new IllegalArgumentException("I don't like Booleans");
}
sb.append(value);
}
sb.append(fragmentsIter.next());
return sb.toString();
}
}
MyProcessor myProcessor = new MyProcessor();
try {
int x = 10;
int y = 20;
String result = myProcessor."\{x} + \{y} = \{x + y}";
...
} catch (IllegalArgumentException ex) {
...
}
Пользователь имеет возможность проверять входные данные, используемые в составлении. Например, процессор SQL может предотвратить уязвимости внедрения, очищая входные данные или выбросив исключение типа E в случае потенциальной уязвимости SQL-запроса.
Составление позволяет пользователю контролировать, как собирается результат. Чаще всего пользователь создает новую строку из шаблона строки, заменяя заполнитель строковыми представлениями элементов списка значений. Эти строковые представления создаются так, как если бы вызывался String.valueOf(java.lang.Object).
Преобразование позволяет процессору возвращать значение, отличное от строки. Например, процессор JSON может возвращать объект JSON, анализируя строку, созданную при составлении, вместо составленной строки.
StringTemplate.ProcessorПРЕДПРОСМОТР является FunctionalInterface. Это позволяет объявлять процессор с использованием лямбда-выражений;
Processor<String, RuntimeException> processor = st -> {
List<String> fragments = st.fragments();
List<Object> values = st.values();
// check or manipulate the fragments and/or values
...
return StringTemplate.interpolate(fragments, values);
};
StringTemplate.interpolate()ПРЕДПРОСМОТР доступен для тех процессоров, которым просто нужно работать со строковой интерполяцией; Processor<String, RuntimeException> processor = StringTemplate::interpolate;
String; Processor<JSONObject, RuntimeException> jsonProcessor = st -> new JSONObject(st.interpolate());
- Примечание реализации:
- Компилятор Java автоматически импортирует
StringTemplate.STRПРЕДПРОСМОТР - См. Спецификацию языка Java:
- 15.8.6 Обработка выражений шаблонов
- С:
- 21
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
StringTemplate.Processor.LinkagePREVIEW |
Предварительный просмотр. Встроенные политики, использующие этот дополнительный интерфейс, обладают гибкостью для специализации составления строкового шаблона, возвращая настроенный MethodHandle из linkageПРЕДПРОСМОТР. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <T> StringTemplate.ProcessorPREVIEW |
of |
Этот фабричный метод может использоваться для создания StringTemplate.ProcessorПРЕДПРОСМОТР, содержащего метод process(java.lang.StringTemplate), полученный из лямбда-выражения. |
R |
process |
Создаёт результат на основе фрагментов шаблона и значений в переданном объекте stringTemplateПРЕДПРОСМОТР. |
Подробное описание методов
process
R process(StringTemplatePREVIEW stringTemplate) throws E
stringTemplateПРЕДПРОСМОТР.- Примечание API:
- Обработка
StringTemplateПРЕДПРОСМОТР может включать проверку в соответствии с конкретными фактами, относящимися к каждой ситуации. Параметр типаEуказывает тип проверяемого исключения, которое выбрасывается методомprocess(java.lang.StringTemplate)при неудачной проверке, напримерjava.sql.SQLException. Если проверяемое исключение не ожидается, может использоватьсяRuntimeException. Обратите внимание, что необработанные исключения, такие какRuntimeException,NullPointerExceptionилиIllegalArgumentException, могут быть выброшены в ходе обычной обработки аргументов метода. Подробности о выброшенных исключениях можно найти в документации конкретной реализации. - Параметры:
-
stringTemplate- экземплярStringTemplateПРЕДПРОСМОТР - Возвращает:
- созданный объект типа R
- Выбрасывает:
-
E- исключение, выброшенное процессором шаблона при неудачной проверке
of
static <T> StringTemplate.ProcessorPREVIEW<T,RuntimeException> of(Function<? super StringTemplatePREVIEW,? extends T> process)
StringTemplate.ProcessorПРЕДПРОСМОТР, содержащего метод process(java.lang.StringTemplate), полученный из лямбда-выражения. В качестве примера; Processor<String, RuntimeException> mySTR = Processor.of(StringTemplate::interpolate);
int x = 10;
int y = 20;
String str = mySTR."\{x} + \{y} = \{x + y}";
StringTemplate.ProcessorПРЕДПРОСМОТР может быть получен из лямбда-выражения, поэтому этот метод может использоваться в операторе var. Например, mySTR выше также можно объявить с помощью; var mySTR = Processor.of(StringTemplate::interpolate);
RuntimeException.- Тип параметров:
-
T- Тип результата обработки процессора - Параметры:
-
process- функция, которая принимаетStringTemplateПРЕДПРОСМОТР в качестве аргумента и возвращает тип результата - Возвращает:
- a
StringTemplate.ProcessorПРЕДПРОСМОТР
© 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/lang/StringTemplate.Processor.html
Processorтолько при включенных функциях предварительного просмотра.