W3cubDocs

/OpenJDK 25

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 Summary

Modifier and Type Method Description
ConstantPool constantPool()
Returns the constant pool for this class.
List<FieldModel> fields()
Returns the fields of this class.
AccessFlags flags()
Returns the access flags.
List<ClassEntry> interfaces()
Returns the interfaces implemented by this class.
boolean isModuleInfo()
Returns whether this class file is a module descriptor.
int majorVersion()
Returns the major version of this class.
List<MethodModel> methods()
Returns the methods of this class.
int minorVersion()
Returns the minor version of this class.
Optional<ClassEntry> superclass()
Returns the superclass of this class, if there is one.
ClassEntry thisClass()
Returns the constant pool entry describing the name of this class.

Methods declared in interface AttributedElement

attributes, findAttribute, findAttributes

Methods declared in interface Iterable

spliterator

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:

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/ClassModel.html