Interface ClassModel

All Superinterfaces:
AttributedElement, ClassFileElement, CompoundElement<ClassElement>, Iterable<ClassElement>

public sealed interface ClassModel extends CompoundElement<ClassElement>, AttributedElement
Models a class file. A class file can be viewed as a composition of ClassElements, or by random access via accessor methods if only specific parts of the class file is needed.

Use ClassFile.parse(byte[]), which parses the binary data of a class file into a model, to obtain a ClassModel.

To construct a class file, use ClassFile.build(ClassDesc, Consumer). ClassFile.transformClass(ClassModel, ClassTransform) allows creating a new class by selectively processing the original class elements and directing the results to a class builder.

A class holds attributes, most of which are accessible as member elements. BootstrapMethodsAttribute can only be accessed via explicit attribute reading, as it is modeled as part of the constant pool.

See Java Virtual Machine Specification:
4.1 The ClassFile Structure
Since:
24
See Also:
  • Method Details

    • constantPool

      ConstantPool constantPool()
      Returns the constant pool for this class.
      Returns:
      the constant pool for this class
      See Also:
    • flags

      AccessFlags flags()
      Returns the access flags.
      Returns:
      the access flags
      See Also:
    • thisClass

      ClassEntry thisClass()
      Returns the constant pool entry describing the name of this class.
      Returns:
      the constant pool entry describing the name of this class
    • majorVersion

      int majorVersion()
      Returns the major version of this class. It is in the range of unsigned short, [0, 65535].
      Returns:
      the major version of this class
      See Also:
    • minorVersion

      int minorVersion()
      Returns the minor version of this class. It is in the range of unsigned short, [0, 65535].
      Returns:
      the minor version of this class
      See Also:
    • fields

      List<FieldModel> fields()
      Returns the fields of this class.
      Returns:
      the fields of this class
    • methods

      List<MethodModel> methods()
      Returns the methods of this class.
      Returns:
      the methods of this class
    • superclass

      Optional<ClassEntry> superclass()
      Returns the superclass of this class, if there is one. This class file may have no superclass if this represents a module descriptor or the Object class; otherwise, it must have a superclass. If this is an interface, the superclass must be Object.
      Returns:
      the superclass of this class, if there is one
      See Also:
    • interfaces

      List<ClassEntry> interfaces()
      Returns the interfaces implemented by this class.
      Returns:
      the interfaces implemented by this class
      See Also:
    • isModuleInfo

      boolean isModuleInfo()
      Returns whether this class file is a module descriptor.
      Returns:
      whether this class file is a module descriptor
      See Also: