Spec-Zone.ru › OpenJDK 21

Класс TemplateRuntime

java.lang.Object
java.lang.runtime.TemplateRuntime
public final class TemplateRuntime extends Object
TemplateRuntime — это предварительный API платформы Java.
Программы могут использовать TemplateRuntime только при включённых предварительных функциях.
Предварительные функции могут быть удалены в будущих релизах или обновлены до постоянных функций платформы Java.
Управляет методами инициализации шаблонов строк. Эти методы могут использоваться, например, реализациями компилятора Java для создания экземпляров StringTemplateПРЕДПРОСМОТР. Например, компилятор Java преобразует следующий код;
int x = 10;
int y = 20;
StringTemplate st = RAW."\{x} + \{y} = \{x + y}";
в байт-код, который вызывает метод инициализации newStringTemplate(java.lang.invoke.MethodHandles.Lookup, java.lang.String, java.lang.invoke.MethodType, java.lang.String...) для построения CallSite, принимающего два целых числа и генерирующего новый экземпляр StringTemplateПРЕДПРОСМОТР.
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodType mt = MethodType.methodType(StringTemplate.class, int.class, int.class);
CallSite cs = TemplateRuntime.newStringTemplate(lookup, "", mt, "", " + ", " = ", "");
...
int x = 10;
int y = 20;
StringTemplate st = (StringTemplate)cs.getTarget().invokeExact(x, y);
Если шаблон строки требует более StringConcatFactory.MAX_INDY_CONCAT_ARG_SLOTSПРЕДПРОСМОТР слотов для значений, то компилятор Java будет использовать метод инициализации newLargeStringTemplate(java.lang.invoke.MethodHandles.Lookup, java.lang.String, java.lang.invoke.MethodType) вместо этого. Например, компилятор Java преобразует следующий код;
int[] a = new int[1000], b = new int[1000];
...
StringTemplate st = """
     \{a[0]} - \{b[0]}
     \{a[1]} - \{b[1]}
     ...
     \{a[999]} - \{b[999]}
     """;
в байт-код, который вызывает метод инициализации newLargeStringTemplate(java.lang.invoke.MethodHandles.Lookup, java.lang.String, java.lang.invoke.MethodType) для построения CallSite, принимающего массив целых чисел и генерирующего новый экземпляр StringTemplateПРЕДПРОСМОТР.
MethodType mt = MethodType.methodType(StringTemplate.class, String[].class, Object[].class);
CallSite cs = TemplateRuntime.newStringTemplate(lookup, "", mt);
...
int[] a = new int[1000], b = new int[1000];
...
StringTemplate st = (StringTemplate)cs.getTarget().invokeExact(
        new String[] { "", " - ", "\n", " - ", "\n", ... " - ", "\n" },
        new Object[] { a[0], b[0], a[1], b[1], ..., a[999], b[999]}
        );
С:
21

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

Модификатор и тип Метод Описание
static CallSite newLargeStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type)
Метод инициализации шаблона строк для создания больших шаблонов строк, т.е. когда количество слотов для значений превышает StringConcatFactory.MAX_INDY_CONCAT_ARG_SLOTSПРЕДПРОСМОТР.
static CallSite newStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type, String... fragments)
Метод инициализации шаблона строк для создания шаблонов строк.
static CallSite processStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type, MethodHandle processorGetter, String... fragments)
Метод инициализации шаблона строк для статических финальных процессоров.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

newStringTemplate

public static CallSite newStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type, String... fragments) throws Throwable
Метод инициализации шаблона строк для создания шаблонов строк. Статические аргументы включают список фрагментов. Нестатические аргументы — значения.
Параметры:
lookup — поиск метода из места вызова
name — имя метода — не используется
type — тип метода (ptypes...) -> StringTemplate
fragments — массив фрагментов для шаблона строки
Возвращает:
CallSite для обработки создания шаблона строки
Исключение:
NullPointerException — если какой-либо из аргументов равен null
Throwable — если связь не удалась

newLargeStringTemplate

public static CallSite newLargeStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type) throws Throwable
Метод инициализации шаблона строк для создания больших шаблонов строк, т.е. когда количество слотов для значений превышает StringConcatFactory.MAX_INDY_CONCAT_ARG_SLOTSПРЕДПРОСМОТР. Нестатические аргументы — массив фрагментов и массив значений.
Параметры:
lookup — поиск метода из места вызова
name — имя метода — не используется
type — тип метода (String[], Object[]) -> StringTemplate
Возвращает:
CallSite для обработки создания большого шаблона строки
Исключение:
NullPointerException — если какой-либо из аргументов равен null
Throwable — если связь не удалась

processStringTemplate

public static CallSite processStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type, MethodHandle processorGetter, String... fragments) throws Throwable
Метод инициализации шаблона строк для статических финальных процессоров. Статические аргументы включают массив фрагментов и MethodHandle для извлечения значения статического финального процессора. Нестатические аргументы — значения.
Примечание реализации:
Этот метод, вероятно, будет переработан перед выходом из предварительного просмотра.
Параметры:
lookup — поиск метода из места вызова
name — имя метода — не используется
type — тип метода (ptypes...) -> Object
processorGetter — MethodHandle для получения статического финального процессора
fragments — фрагменты из шаблона строки
Возвращает:
CallSite для обработки обработки шаблона строки
Исключение:
NullPointerException — если какой-либо из аргументов равен null
Throwable — если связь не удалась

© 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/runtime/TemplateRuntime.html

Spec-Zone.ru

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