Interface ClassModel
- All Superinterfaces:
AttributedElement, ClassFileElement, CompoundElement<ClassElement>, Iterable<ClassElement>
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
ClassFileStructure - Since:
- 24
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionReturns the constant pool for this class.fields()Returns the fields of this class.flags()Returns the access flags.Returns the interfaces implemented by this class.booleanReturns whether thisclassfile is a module descriptor.intReturns the major version of this class.methods()Returns the methods of this class.intReturns the minor version of this class.Returns the superclass of this class, if there is one.Returns the constant pool entry describing the name of this class.Methods declared in interface AttributedElement
attributes, findAttribute, findAttributesModifier and TypeMethodDescriptionReturns the attributes of this structure.findAttribute(AttributeMapper<T> attr) Finds an attribute by name.findAttributes(AttributeMapper<T> attr) Finds attributes by name.Methods declared in interface CompoundElement
elementList, elementStream, forEach, iterator, toDebugStringModifier and TypeMethodDescriptiondefault List<ClassElement> Returns aListcontaining all member elements in this compound element.default Stream<ClassElement> Returns aStreamcontaining all member elements in this compound element.voidforEach(Consumer<? super ClassElement> consumer) Invokes the provided handler with each member element in this compound element.default Iterator<ClassElement> iterator()Returns anIteratordescribing all member elements in this compound element.default StringReturns a text representation of the compound element and its contents for debugging purposes.Methods declared in interface Iterable
spliteratorModifier and TypeMethodDescriptiondefault Spliterator<ClassElement> Creates aSpliteratorover the elements described by thisIterable.
-
Method Details
-
constantPool
ConstantPool constantPool()Returns the constant pool for this class.- Returns:
- the constant pool for this class
- See Also:
-
flags
-
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 au2value.- Returns:
- the major version of this class
- See Also:
-
minorVersion
int minorVersion()Returns the minor version of this class. It is au2value.- Returns:
- the minor version of this class
- See Also:
-
fields
-
methods
-
superclass
Optional<ClassEntry> superclass()Returns the superclass of this class, if there is one. Thisclassfile may have no superclass if this represents a module descriptor or theObjectclass; otherwise, it must have a superclass. If this is an interface, the superclass must beObject.- 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 thisclassfile is a module descriptor.- Returns:
- whether this
classfile is a module descriptor - See Also:
-