- 型パラメータ:
R- プロセッサのプロセス結果タイプE- 例外スロー・タイプ
- 既知のすべての実装クラス:
FormatProcessorPREVIEW
- 含まれているインタフェース:
StringTemplatePREVIEW
- 関数型インタフェース:
- これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。
@FunctionalInterface public static interface StringTemplate.Processor<R,E extends Throwable>
Processorは、JavaプラットフォームのプレビューAPIです。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
このインタフェースでは、汎用文字列テンプレート・プロセッサによって提供されるメソッドについて説明します。 プライマリ・メソッド
このインタフェースの実装では、入力の検証、結果への入力の作成、および最終結果を提供する前に中間文字列結果の非文字列値への変換を行うことができるが、これらに限定されない場合があります。
または、単に文字列補間を
process(StringTemplate)は、StringTemplate'sPREVIEWフラグメントおよび値リストを使用して結果を検証および作成するために使用されます。
たとえば、
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プロセッサは、入力をサニタイズするか、SQL文が潜在的な脆弱性である場合はEタイプの例外をスローすることで、インジェクションの脆弱性を防止できます。
作成により、結果の組み立て方法をユーザーが制御できます。 ほとんどの場合、ユーザーは文字列テンプレートから新しい文字列を作成し、プレースホルダーは値リスト要素の文字列表現に置き換えられます。 これらの文字列表現は、String.valueOf(java.lang.Object)を呼び出すかのように作成されます。
変換によって、プロセッサは文字列以外のものを返すことができます。 たとえば、JSONプロセッサは、合成された文字列ではなく、コンポジションによって作成された文字列を解析することで、JSONオブジェクトを返すことができます。
StringTemplate.ProcessorPREVIEWは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()PREVIEWメソッドは、文字列補間を操作するだけでよいプロセッサで使用できます
Processor<String, RuntimeException> processor = StringTemplate::interpolate;
String以外のものに変換
Processor<JSONObject, RuntimeException> jsonProcessor = st -> new JSONObject(st.interpolate());
- 実装上のノート:
- Javaコンパイラは、
StringTemplate.STRPREVIEWを自動的にインポート - Java言語仕様を参照してください:
-
「15.8.6 テンプレート式の処理」
- 導入されたバージョン:
- 21
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型インタフェース説明static interfacePreview.この追加のインタフェースを使用する組込みポリシーでは、カスタマイズされたMethodHandleをlinkagePREVIEWから返すことで、テンプレート文字列の構成を柔軟に特殊化できます。 -
メソッドのサマリー
修飾子と型メソッド説明static <T> StringTemplate.ProcessorPREVIEW<T, RuntimeException> of(Function<? super StringTemplatePREVIEW, ? extends T> process) このファクトリ・メソッドを使用すると、ラムダ式から導出されたprocess(java.lang.StringTemplate)メソッドを含むStringTemplate.ProcessorPREVIEWを作成できます。process(StringTemplatePREVIEW stringTemplate) 指定されたstringTemplatePREVIEWオブジェクトのテンプレート・フラグメントおよび値に基づいて結果を作成します。
-
メソッドの詳細
-
process
R process(StringTemplatePREVIEW stringTemplate) throws E 指定されたstringTemplatePREVIEWオブジェクトのテンプレート・フラグメントおよび値に基づいて結果を作成します。- APIのノート:
StringTemplatePREVIEWの処理には、各状況に関連する特定のファクトに従って検証が含まれる場合があります。E型パラメータは、検証に失敗した場合にprocess(java.lang.StringTemplate)によってスローされるチェック済例外のタイプを示します(例:java.sql.SQLException)。 チェック例外が予想されない場合は、RuntimeExceptionを使用できます。 チェックされていない例外(RuntimeException、NullPointerException、IllegalArgumentExceptionなど)は、通常のメソッド引数処理の一部としてスローされる場合があります。 例外がスローされる詳細は、特定の実装のドキュメントを参照してください。- パラメータ:
stringTemplate-StringTemplatePREVIEWインスタンス- 戻り値:
- R型の構成オブジェクト
- スロー:
E- 検証が失敗したときにテンプレート・プロセッサによってスローされた例外
-
of
static <T> StringTemplate.ProcessorPREVIEW<T,RuntimeException> of(Function<? super StringTemplatePREVIEW, ? extends T> process) このファクトリ・メソッドを使用すると、ラムダ式から導出されたprocess(java.lang.StringTemplate)メソッドを含むStringTemplate.ProcessorPREVIEWを作成できます。 次に例を示します;構築されたProcessor<String, RuntimeException> mySTR = Processor.of(StringTemplate::interpolate); int x = 10; int y = 20; String str = mySTR."\{x} + \{y} = \{x + y}";StringTemplate.ProcessorPREVIEWの結果タイプはラムダ式から導出できるため、このメソッドはvar文で使用できます。 たとえば、上記からmySTRを次のように宣言することもできますvar mySTR = Processor.of(StringTemplate::interpolate);RuntimeExceptionは、スローされた想定される例外タイプです。- 型パラメータ:
T- プロセッサのプロセス結果タイプ- パラメータ:
process- 引数としてStringTemplatePREVIEWを取得し、推測結果タイプを返す関数- 戻り値:
- a
StringTemplate.ProcessorPREVIEW
-
Processorを使用できます。