Класс TemplateRuntime
java.lang.Object
java.lang.runtime.TemplateRuntime
public final class TemplateRuntime extends Object
TemplateRuntime — это предварительный API платформы Java. Предварительные функции могут быть удалены в будущих релизах или обновлены до постоянных функций платформы 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 |
Метод инициализации шаблона строк для создания больших шаблонов строк, т.е. когда количество слотов для значений превышает StringConcatFactory.MAX_INDY_CONCAT_ARG_SLOTSПРЕДПРОСМОТР. |
static CallSite |
newStringTemplate |
Метод инициализации шаблона строк для создания шаблонов строк. |
static CallSite |
processStringTemplate |
Метод инициализации шаблона строк для статических финальных процессоров. |
Подробное описание методов
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
TemplateRuntimeтолько при включённых предварительных функциях.