インタフェース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ファイルを生成するために、そのような要素を変更または削除するかどうかを制御します。

シール済クラス階層グラフ:
ClassFileBuilderのシール済クラス階層グラフClassFileBuilderのシール済クラス階層グラフ
導入されたバージョン:
24
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    default void
    accept(E e)
    メンバー・エレメントを、作成する構造体に統合します。
    このビルダーに関連付けられた定数プール・ビルダーを返します。
    default B
    変換を複合構造に適用し、結果をこのビルダーに指示します。
    with(E e)
    メンバー・エレメントを、作成する構造体に統合します。

    インタフェースjava.util.function.Consumerで宣言されたメソッド

    andThen
  • メソッドの詳細

    • accept

      default void accept(E e)
      メンバー・エレメントを、作成する構造体に統合します。
      定義:
      インタフェースConsumer<E extends ClassFileElement>内のaccept
      APIのノート:
      このメソッドは、Consumerを実装するために存在します。ユーザーは、with(E)をコール・チェーンに使用できます。
      パラメータ:
      e - member要素
      スロー:
      IllegalArgumentException - メンバー要素をclassファイル形式で表すことができない場合
    • with

      B with(E e)
      メンバー・エレメントを、作成する構造体に統合します。
      パラメータ:
      e - member要素
      戻り値:
      このビルダー
      スロー:
      IllegalArgumentException - メンバー要素をclassファイル形式で表すことができない場合
    • constantPool

      ConstantPoolBuilder 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 - 適用する変換
      戻り値:
      このビルダー
      関連項目: