ClassElement (Java SE 25 & JDK 25)
Description: declaration: module: java.base, package: java.lang.classfile, interface: ClassElement
Keywords: java.lang.classfile.ClassElement interface

# Interface ClassElement

All Superinterfaces:
  `ClassFileElement`

All Known Subinterfaces:
  `AccessFlags, ClassFileVersion, CompilationIDAttribute, DeprecatedAttribute, EnclosingMethodAttribute, FieldModel, InnerClassesAttribute, Interfaces, MethodModel, ModuleAttribute, ModuleHashesAttribute, ModuleMainClassAttribute, ModulePackagesAttribute, ModuleResolutionAttribute, ModuleTargetAttribute, NestHostAttribute, NestMembersAttribute, PermittedSubclassesAttribute, RecordAttribute, RuntimeInvisibleAnnotationsAttribute, RuntimeInvisibleTypeAnnotationsAttribute, RuntimeVisibleAnnotationsAttribute, RuntimeVisibleTypeAnnotationsAttribute, SignatureAttribute, SourceDebugExtensionAttribute, SourceFileAttribute, SourceIDAttribute, Superclass, SyntheticAttribute, UnknownAttribute`

All Known Implementing Classes:
  `CustomAttribute`

public sealed interface ClassElement extends ClassFileElement permits AccessFlags, Superclass, Interfaces, ClassFileVersion, FieldModel, MethodModel, CustomAttribute<T>, CompilationIDAttribute, DeprecatedAttribute, EnclosingMethodAttribute, InnerClassesAttribute, ModuleAttribute, ModuleHashesAttribute, ModuleMainClassAttribute, ModulePackagesAttribute, ModuleResolutionAttribute, ModuleTargetAttribute, NestHostAttribute, NestMembersAttribute, PermittedSubclassesAttribute, RecordAttribute, RuntimeInvisibleAnnotationsAttribute, RuntimeInvisibleTypeAnnotationsAttribute, RuntimeVisibleAnnotationsAttribute, RuntimeVisibleTypeAnnotationsAttribute, SignatureAttribute, SourceDebugExtensionAttribute, SourceFileAttribute, SourceIDAttribute, SyntheticAttribute, UnknownAttribute
Marker interface for a member element of a `ClassModel`. Such an element can appear when traversing a `ClassModel` unless otherwise specified, be supplied to a `ClassBuilder`, and be processed by a `ClassTransform`.

`AccessFlags`, and `ClassFileVersion` are member elements of a class that appear exactly once during the traversal of a `ClassModel`. `Superclass` and `Interfaces` may be absent or appear at most once. A `ClassBuilder` may provide an alternative superclass if it is not defined but required.

Sealed Class Hierarchy Graph:
Since:
  24
See Also:
  - Membership Elements
  - `MethodElement`
  - `FieldElement`
  - `CodeElement`