モジュール java.base
パッケージ java.lang.runtime

クラスTemplateRuntime

java.lang.Object
java.lang.runtime.TemplateRuntime

public final class TemplateRuntime extends Object
TemplateRuntimeは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効な場合のみ、プログラムでTemplateRuntimeを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
文字列テンプレートのブートストラップ・メソッドを管理します。 これらのメソッドは、たとえば、Javaコンパイラ実装によってStringTemplatePREVIEWインスタンスを作成するために使用できます。 たとえば、javaコンパイラは次のコードを変換
int x = 10;
int y = 20;
StringTemplate st = RAW."\{x} + \{y} = \{x + y}";
2つの整数を受け入れ、新しいStringTemplatePREVIEWインスタンスを生成する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_SLOTSPREVIEW以上の値スロットが必要な場合、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]}
     """;
整数の配列を受け入れ、新しいStringTemplatePREVIEWインスタンスを生成する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