インタフェースClassFileBuilder<E extends ClassFileElement, B extends ClassFileBuilder<E,B>>
- 型パラメータ:
E- メンバー要 タイプB- このビルダーの自己タイプ
- すべてのスーパー・インタフェース:
Consumer<E>
- 既知のすべてのサブインタフェース:
ClassBuilder,CodeBuilder,CodeBuilder.BlockCodeBuilder,FieldBuilder,MethodBuilder
public sealed interface ClassFileBuilder<E extends ClassFileElement, B extends ClassFileBuilder<E,B>> extends Consumer<E> permits ClassBuilder, FieldBuilder, MethodBuilder, CodeBuilder
CompoundElementのビルダー。ビルドされた構 体に統合されるメンバー要 を受け入れます。 ビルダーは通常、引数としてConsumerハンドラに渡されます(ClassFile.build(ClassDesc, Consumer)など)。 ハンドラは、CompoundElementがそのメンバー要 を横断する方法と同様の要 をビルダーに配信する必要があります。
ビルダーが要 を受け入れる基本的な方法は、with(E)を介してコール・チェーンをサポートします。 ビルダーの具体的なサブタイプでは、通常、ClassBuilder.withFlags(int)やCodeBuilder.aload(int)などの要 をビルダーに直接定義するための追 のメソッドを定義します。
メンバー要 が複合構 内で複数回出現できるかどうかは、ClassFileBuilderの要 の動作に影響します。 1つの要 が最大1回出現しても、複数のインスタンスがClassFileBuilderに提供される 合、最後に指定されたインスタンスがビルド構 に表示されます。 エレメントが1回 け出現し、インスタンスが指定されていない 合は、その構 に未指定のデフォルト値エレメントを使用できます。
classファイル形式の制限により、特定の状況下では、APIでモデル化できる特定のメンバー要 をビルド構 で表現できません。 このような要 をビルダーに渡すと、IllegalArgumentExceptionが発生します。 一部のClassFile.Optionは、有効な classファイルを生成するために、そのような要 を変更または削除するかどうかを制御します。
-
メソッドのサマリー
修飾子と型メソッド説明default voidメンバー・エレメントを、作成する構 体に統合します。このビルダーに関連付けられた定数プール・ビルダーを返します。default Btransform(CompoundElement<E> model, ClassFileTransform<?, E, B> transform) 変換を複合構 に適用し、結果をこのビルダーに指示します。メンバー・エレメントを、作成する構 体に統合します。
-
メソッドの詳細
-
accept
default void accept(E e) メンバー・エレメントを、作成する構 体に統合します。- 定義:
- インタフェース
Consumer<E extends ClassFileElement>内のaccept - APIのノート:
- このメソッドは、
Consumerを実装するために存在します。ユーザーは、with(E)をコール・チェーンに使用できます。 - パラメータ:
e- member要- スロー:
IllegalArgumentException- メンバー要 をclassファイル形式で表すことができない 合
-
with
メンバー・エレメントを、作成する構 体に統合します。- パラメータ:
e- member要- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException- メンバー要 をclassファイル形式で表すことができない 合
-
constantPool
-
transform
default B transform(CompoundElement<E> model, ClassFileTransform<?, E, B> transform) 変換を複合構 に適用し、結果をこのビルダーに指示します。変換は、複合構 の各要 と、構 を構築するためのこのビルダーを受け取ります。 変換は、要 が適合するように自由に保持、削除または置換できます。
ビルダーは、異なる複合構 に対して複数の変換を実行し、異なる起点のメンバー要 を統合できます。
- APIのノート:
- 多くのサブインタフェースには、
ClassBuilder.transformMethod(java.lang.classfile.MethodModel, java.lang.classfile.MethodTransform)やMethodBuilder.transformCode(java.lang.classfile.CodeModel, java.lang.classfile.CodeTransform)などのメソッドがあります。 た し、これらのコールは、このメソッドのコールとは基本的に異なります: これらのメソッドは、それ自体ではなく、子ビルダーでtransformをコールします。 たとえば、classBuilder.transformMethodは、classBuilder.transform自体をコールするかわりに、新しいメソッド・ビルダーを使用してmethodBuilder.transformをコールします。 - パラメータ:
model- 変換する構transform- 適用する変換- 戻り値:
- このビルダー
- 関連 目:
-