Interface ClassBuilder

All Superinterfaces:
ClassFileBuilderPREVIEW<ClassElementPREVIEW,ClassBuilderPREVIEW>, Consumer<ClassElementPREVIEW>

public sealed interface ClassBuilder extends ClassFileBuilderPREVIEW<ClassElementPREVIEW,ClassBuilderPREVIEW>
ClassBuilder is a preview API of the Java platform.
Programs can only use ClassBuilder when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
A builder for classfiles. Builders are not created directly; they are passed to handlers by methods such as ClassFile.build(ClassDesc, Consumer)PREVIEW or to class transforms. The elements of a classfile can be specified abstractly (by passing a ClassElementPREVIEW to ClassFileBuilder.with(ClassFileElement)PREVIEW) or concretely by calling the various withXxx methods.
Since:
22
See Also:
  • Method Details

    • withVersion

      default ClassBuilderPREVIEW withVersion(int major, int minor)
      Sets the classfile version.
      Parameters:
      major - the major version number
      minor - the minor version number
      Returns:
      this builder
    • withFlags

      default ClassBuilderPREVIEW withFlags(int flags)
      Sets the classfile access flags.
      Parameters:
      flags - the access flags, as a bit mask
      Returns:
      this builder
    • withFlags

      default ClassBuilderPREVIEW withFlags(AccessFlag... flags)
      Sets the classfile access flags.
      Parameters:
      flags - the access flags
      Returns:
      this builder
    • withSuperclass

      default ClassBuilderPREVIEW withSuperclass(ClassEntryPREVIEW superclassEntry)
      Sets the superclass of this class.
      Parameters:
      superclassEntry - the superclass
      Returns:
      this builder
    • withSuperclass

      default ClassBuilderPREVIEW withSuperclass(ClassDesc desc)
      Sets the superclass of this class.
      Parameters:
      desc - the superclass
      Returns:
      this builder
      Throws:
      IllegalArgumentException - if desc represents a primitive type
    • withInterfaces

      default ClassBuilderPREVIEW withInterfaces(List<ClassEntryPREVIEW> interfaces)
      Sets the interfaces of this class.
      Parameters:
      interfaces - the interfaces
      Returns:
      this builder
    • withInterfaces

      default ClassBuilderPREVIEW withInterfaces(ClassEntryPREVIEW... interfaces)
      Sets the interfaces of this class.
      Parameters:
      interfaces - the interfaces
      Returns:
      this builder
    • withInterfaceSymbols

      default ClassBuilderPREVIEW withInterfaceSymbols(List<ClassDesc> interfaces)
      Sets the interfaces of this class.
      Parameters:
      interfaces - the interfaces
      Returns:
      this builder
    • withInterfaceSymbols

      default ClassBuilderPREVIEW withInterfaceSymbols(ClassDesc... interfaces)
      Sets the interfaces of this class.
      Parameters:
      interfaces - the interfaces
      Returns:
      this builder
    • withField

      ClassBuilderPREVIEW withField(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, Consumer<? super FieldBuilderPREVIEW> handler)
      Adds a field.
      Parameters:
      name - the name of the field
      descriptor - the field descriptor
      handler - handler which receives a FieldBuilderPREVIEW which can further define the contents of the field
      Returns:
      this builder
    • withField

      default ClassBuilderPREVIEW withField(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, int flags)
      Adds a field.
      Parameters:
      name - the name of the field
      descriptor - the field descriptor
      flags - the access flags for this field
      Returns:
      this builder
    • withField

      default ClassBuilderPREVIEW withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilderPREVIEW> handler)
      Adds a field.
      Parameters:
      name - the name of the field
      descriptor - the field descriptor
      handler - handler which receives a FieldBuilderPREVIEW which can further define the contents of the field
      Returns:
      this builder
    • withField

      default ClassBuilderPREVIEW withField(String name, ClassDesc descriptor, int flags)
      Adds a field.
      Parameters:
      name - the name of the field
      descriptor - the field descriptor
      flags - the access flags for this field
      Returns:
      this builder
    • transformField

      ClassBuilderPREVIEW transformField(FieldModelPREVIEW field, FieldTransformPREVIEW transform)
      Adds a field by transforming a field from another class.
      Implementation Note:

      This method behaves as if:

          withField(field.fieldName(), field.fieldType(),
                     b -> b.transformField(field, transform));
      
      Parameters:
      field - the field to be transformed
      transform - the transform to apply to the field
      Returns:
      this builder
    • withMethod

      ClassBuilderPREVIEW withMethod(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, int methodFlags, Consumer<? super MethodBuilderPREVIEW> handler)
      Adds a method.
      Parameters:
      name - the name of the method
      descriptor - the method descriptor
      methodFlags - the access flags
      handler - handler which receives a MethodBuilderPREVIEW which can further define the contents of the method
      Returns:
      this builder
    • withMethodBody

      default ClassBuilderPREVIEW withMethodBody(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, int methodFlags, Consumer<? super CodeBuilderPREVIEW> handler)
      Adds a method, with only a Code attribute.
      Parameters:
      name - the name of the method
      descriptor - the method descriptor
      methodFlags - the access flags
      handler - handler which receives a CodeBuilderPREVIEW which can define the contents of the method body
      Returns:
      this builder
    • withMethod

      default ClassBuilderPREVIEW withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilderPREVIEW> handler)
      Adds a method.
      Parameters:
      name - the name of the method
      descriptor - the method descriptor
      methodFlags - the access flags
      handler - handler which receives a MethodBuilderPREVIEW which can further define the contents of the method
      Returns:
      this builder
    • withMethodBody

      default ClassBuilderPREVIEW withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilderPREVIEW> handler)
      Adds a method, with only a CodeAttributePREVIEW.
      Parameters:
      name - the name of the method
      descriptor - the method descriptor
      methodFlags - the access flags
      handler - handler which receives a CodeBuilderPREVIEW which can define the contents of the method body
      Returns:
      this builder
    • transformMethod

      ClassBuilderPREVIEW transformMethod(MethodModelPREVIEW method, MethodTransformPREVIEW transform)
      Adds a method by transforming a method from another class.
      Implementation Note:

      This method behaves as if:

          withMethod(method.methodName(), method.methodType(),
                     b -> b.transformMethod(method, transform));
      
      Parameters:
      method - the method to be transformed
      transform - the transform to apply to the method
      Returns:
      this builder