インタフェースClassBuilder

すべてのスーパー・インタフェース:
ClassFileBuilder<ClassElement, ClassBuilder>, Consumer<ClassElement>

public sealed interface ClassBuilder extends ClassFileBuilder<ClassElement, ClassBuilder>
classファイルのビルダー。 ClassFileは、このようなビルダーを構成するためのハンドラを受け入れる様々なbuildメソッドを提供します。ClassFile.build(ClassDesc, Consumer)は基本的な使用方法に十分ですが、ClassFile.build(ClassEntry, ConstantPoolBuilder, Consumer)「定数プール」に対するファイングレイン制御を可能にします。

classファイル形式の構造体に対するビルダーの使用に関する一般的なガイダンスおよび注意事項は、ClassFileBuilderを参照してください。

導入されたバージョン:
24
関連項目:
  • メソッドの詳細

    • withVersion

      default ClassBuilder withVersion(int major, int minor)
      このクラスのバージョンを設定します。
      パラメータ:
      major - メジャー・バージョン番号
      minor - マイナー・バージョン番号
      戻り値:
      このビルダー
      関連項目:
    • withFlags

      default ClassBuilder withFlags(int flags)
      このクラスのアクセス・フラグを設定します。
      パラメータ:
      flags - ビット・マスクとしてのアクセス・フラグ
      戻り値:
      このビルダー
      関連項目:
    • withFlags

      default ClassBuilder withFlags(AccessFlag... flags)
      このクラスのアクセス・フラグを設定します。
      パラメータ:
      flags - アクセス・フラグをフラグ列挙として
      戻り値:
      このビルダー
      スロー:
      IllegalArgumentException - AccessFlag.Location.CLASSのロケーションにフラグを適用できない場合
      関連項目:
    • withSuperclass

      default ClassBuilder withSuperclass(ClassEntry superclassEntry)
      このクラスのスーパークラスを設定します。
      パラメータ:
      superclassEntry - スーパークラス
      戻り値:
      このビルダー
      関連項目:
    • withSuperclass

      default ClassBuilder withSuperclass(ClassDesc desc)
      このクラスのスーパークラスを設定します。
      パラメータ:
      desc - スーパークラス
      戻り値:
      このビルダー
      スロー:
      IllegalArgumentException - descがプリミティブ型を表す場合
      関連項目:
    • withInterfaces

      default ClassBuilder withInterfaces(List<ClassEntry> interfaces)
      このクラスのインタフェースを設定します。
      パラメータ:
      interfaces - インタフェース
      戻り値:
      このビルダー
      関連項目:
    • withInterfaces

      default ClassBuilder withInterfaces(ClassEntry... interfaces)
      このクラスのインタフェースを設定します。
      パラメータ:
      interfaces - インタフェース
      戻り値:
      このビルダー
      関連項目:
    • withInterfaceSymbols

      default ClassBuilder withInterfaceSymbols(List<ClassDesc> interfaces)
      このクラスのインタフェースを設定します。
      パラメータ:
      interfaces - インタフェース
      戻り値:
      このビルダー
      スロー:
      IllegalArgumentException - interfacesの要素がプリミティブである場合
      関連項目:
    • withInterfaceSymbols

      default ClassBuilder withInterfaceSymbols(ClassDesc... interfaces)
      このクラスのインタフェースを設定します。
      パラメータ:
      interfaces - インタフェース
      戻り値:
      このビルダー
      スロー:
      IllegalArgumentException - interfacesの要素がプリミティブである場合
      関連項目:
    • withField

      ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)
      フィールドを追加します
      パラメータ:
      name - フィールド名
      descriptor - フィールド記述子文字列
      handler - フィールドの内容を提供するハンドラ
      戻り値:
      このビルダー
      関連項目:
    • withField

      default ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, int flags)
      アクセス・フラグのみを持つフィールドを追加します。
      パラメータ:
      name - フィールド名
      descriptor - フィールド記述子文字列
      flags - このフィールドのアクセス・フラグをビット・マスクとして
      戻り値:
      このビルダー
      関連項目:
    • withField

      default ClassBuilder withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler)
      フィールドを追加します
      パラメータ:
      name - フィールド名
      descriptor - シンボリック・フィールド記述子
      handler - フィールドの内容を提供するハンドラ
      戻り値:
      このビルダー
      関連項目:
    • withField

      default ClassBuilder withField(String name, ClassDesc descriptor, int flags)
      アクセス・フラグのみを持つフィールドを追加します。
      パラメータ:
      name - フィールド名
      descriptor - シンボリック・フィールド記述子
      flags - このフィールドのアクセス・フラグをビット・マスクとして
      戻り値:
      このビルダー
      関連項目:
    • transformField

      ClassBuilder transformField(FieldModel field, FieldTransform transform)
      フィールドを別のクラスから変換してフィールドを追加します。

      このメソッドは次のように動作します:

      withField(field.fieldName(), field.fieldType(),
                fb -> fb.transform(field, transform))
      

      パラメータ:
      field - 変換するフィールド
      transform - フィールドに適用する変換
      戻り値:
      このビルダー
      関連項目:
    • withMethod

      ClassBuilder withMethod(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
      メソッドを追加します。 ACC_STATICフラグのビットは、後でhandlerによって変更できず、methodFlagsを使用して設定する必要があります。
      パラメータ:
      name - メソッド名
      descriptor - メソッド記述子
      methodFlags - ACC_STATICビットが確実に設定されたビット・マスクとしてのアクセス・フラグ
      handler - メソッドの内容を提供するハンドラ
      戻り値:
      このビルダー
      関連項目:
    • withMethodBody

      default ClassBuilder withMethodBody(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
      アクセス・フラグとCodeModelのみを持つメソッドを追加します。 ACC_STATICフラグのビットは、後でhandlerによって変更できず、methodFlagsを使用して設定する必要があります。

      このメソッドは次のように動作します:

      withMethod(name, descriptor, methodFlags, mb -> mb.withCode(handler))
      

      パラメータ:
      name - メソッド名
      descriptor - メソッド記述子
      methodFlags - ACC_STATICビットが確実に設定されたビット・マスクとしてのアクセス・フラグ
      handler - メソッド本文の内容を提供するハンドラ
      戻り値:
      このビルダー
      関連項目:
    • withMethod

      default ClassBuilder withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
      メソッドを追加します。 ACC_STATICフラグのビットはhandlerで変更できず、methodFlagsで設定する必要があります。
      パラメータ:
      name - メソッド名
      descriptor - メソッド記述子
      methodFlags - ACC_STATICビットが確実に設定されたビット・マスクとしてのアクセス・フラグ
      handler - メソッドの内容を提供するハンドラ
      戻り値:
      このビルダー
      関連項目:
    • withMethodBody

      default ClassBuilder withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
      アクセス・フラグとCodeModelのみを持つメソッドを追加します。 ACC_STATICフラグのビットはhandlerで変更できず、methodFlagsで設定する必要があります。

      このメソッドは次のように動作します:

      withMethod(name, descriptor, methodFlags, mb -> mb.withCode(handler))
      

      パラメータ:
      name - メソッド名
      descriptor - メソッド記述子
      methodFlags - ACC_STATICビットが確実に設定されたビット・マスクとしてのアクセス・フラグ
      handler - メソッド本文の内容を提供するハンドラ
      戻り値:
      このビルダー
      関連項目:
    • transformMethod

      ClassBuilder transformMethod(MethodModel method, MethodTransform transform)
      別のクラスからメソッドを変換してメソッドを追加します。 変換では、元のメソッドのACC_STATICフラグを変更できません。

      このメソッドは次のように動作します:

      withMethod(method.methodName(), method.methodType(), method.flags().flagMask(),
                 mb -> mb.transform(method, transform))
      

      パラメータ:
      method - 変換されるメソッド
      transform - メソッドに適用する変換
      戻り値:
      このビルダー
      関連項目: