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