Spec-Zone.ru › OpenJDK 21

Интерфейс StringTemplate.Processor<R,E extends Throwable>

Тип параметров:
R - Тип результата обработки процессора
E - Тип выбрасываемого исключения
Все известные реализующие классы:
FormatProcessorPREVIEW
Вложенный интерфейс:
StringTemplatePREVIEW
Функциональный интерфейс:
Это функциональный интерфейс и поэтому может использоваться в качестве целевого назначения лямбда-выражения или ссылки на метод.
@FunctionalInterface public static interface StringTemplate.Processor<R,E extends Throwable>
Processor — это API предварительного просмотра платформы Java.
Программы могут использовать Processor только при включенных функциях предварительного просмотра.
Функции предварительного просмотра могут быть удалены в будущей версии или обновлены до постоянных функций платформы 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
См. также:
  • StringTemplateПРЕДПРОСМОТР
  • FormatProcessorПРЕДПРОСМОТР

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static interface  StringTemplate.Processor.LinkagePREVIEW
Предварительный просмотр.
Встроенные политики, использующие этот дополнительный интерфейс, обладают гибкостью для специализации составления строкового шаблона, возвращая настроенный MethodHandle из linkageПРЕДПРОСМОТР.

Краткое описание методов

Модификатор и тип Метод Описание
static <T> StringTemplate.ProcessorPREVIEW<T,RuntimeException> of(Function<? super StringTemplatePREVIEW,? extends T> process)
Этот фабричный метод может использоваться для создания StringTemplate.ProcessorПРЕДПРОСМОТР, содержащего метод process(java.lang.StringTemplate), полученный из лямбда-выражения.
R process(StringTemplatePREVIEW stringTemplate)
Создаёт результат на основе фрагментов шаблона и значений в переданном объекте 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API