java.lang.Object
java.lang.runtime.TemplateRuntime
public final class TemplateRuntime extends Object
TemplateRuntime
は、JavaプラットフォームのプレビューAPIです。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
文字列テンプレートのブートストラップ・メソッドを管理します。 これらのメソッドは、たとえば、Javaコンパイラ実装によって
2つの整数を受け入れ、新しい
文字列テンプレートに
整数の配列を受け入れ、新しい
StringTemplate
PREVIEWインスタンスを作成するために使用できます。 たとえば、javaコンパイラは次のコードを変換
int x = 10;
int y = 20;
StringTemplate st = RAW."\{x} + \{y} = \{x + y}";
StringTemplate
PREVIEWインスタンスを生成するCallSite
を構築するためにnewStringTemplate(java.lang.invoke.MethodHandles.Lookup, java.lang.String, java.lang.invoke.MethodType, java.lang.String...)
ブートストラップ・メソッドを呼び出すバイト・コード。
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
PREVIEW以上の値スロットが必要な場合、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]}
""";
StringTemplate
PREVIEWインスタンスを生成するCallSite
を構築するために、newLargeStringTemplate(java.lang.invoke.MethodHandles.Lookup, java.lang.String, java.lang.invoke.MethodType)
ブートストラップ・メソッドを呼び出すバイト・コード。
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
PREVIEWを超える場合)。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) 静的最終プロセッサの文字列テンプレート・ブートストラップ・メソッド。
-
メソッドの詳細
-
newStringTemplate
public static CallSite newStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type, String... fragments) throws Throwable 文字列テンプレートを作成するための文字列テンプレート・ブートストラップ・メソッド。 静的引数にはフラグメント・リストが含まれます。 非静的引数は値です。- パラメータ:
lookup
- コール・サイトからのメソッド・ルックアップname
- メソッド名 - 未使用type
- メソッド・タイプ(ptypes...) -> StringTemplatefragments
- 文字列テンプレートのフラグメント配列- 戻り値:
CallSite
:作成文字列テンプレートを処理- 例外:
NullPointerException
- 引数のいずれかがnullの場合Throwable
- リンクが失敗した場合
-
newLargeStringTemplate
public static CallSite newLargeStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type) throws Throwable 大きな文字列テンプレートを作成するための文字列テンプレート・ブートストラップ・メソッド(つまり、値スロット数がStringConcatFactory.MAX_INDY_CONCAT_ARG_SLOTS
PREVIEWを超える場合)。 非静的引数は、フラグメント配列と値の配列です。- パラメータ:
lookup
- コール・サイトからのメソッド・ルックアップname
- メソッド名 - 未使用type
- メソッド・タイプ(文字列[]、オブジェクト[]) -> 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...) ->オブジェクトprocessorGetter
-MethodHandle
:静的最終プロセッサを取得fragments
- 文字列テンプレートからのフラグメント- 戻り値:
- 文字列テンプレートの処理を処理する
CallSite
- 例外:
NullPointerException
- 引数のいずれかがnullの場合Throwable
- リンクが失敗した場合
-
TemplateRuntime
を使用できます。