インタフェース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 - 適用する変換
      戻り値:
      このビルダー
      関連 目: