Module java.base
Package java.lang.classfile

# Interface ClassElement

≠
public abstract sealed interface ClassElement
extends java.lang.classfile.ClassFileElement
permits java.lang.classfile.AccessFlags, java.lang.classfile.ClassFileVersion, java.lang.classfile.CustomAttribute<T>, java.lang.classfile.FieldModel, java.lang.classfile.Interfaces, java.lang.classfile.MethodModel, java.lang.classfile.Superclass, java.lang.classfile.attribute.CompilationIDAttribute, java.lang.classfile.attribute.DeprecatedAttribute, java.lang.classfile.attribute.EnclosingMethodAttribute, java.lang.classfile.attribute.InnerClassesAttribute, java.lang.classfile.attribute.LoadableDescriptorsAttribute, java.lang.classfile.attribute.ModuleAttribute, java.lang.classfile.attribute.ModuleHashesAttribute, java.lang.classfile.attribute.ModuleMainClassAttribute, java.lang.classfile.attribute.ModulePackagesAttribute, java.lang.classfile.attribute.ModuleResolutionAttribute, java.lang.classfile.attribute.ModuleTargetAttribute, java.lang.classfile.attribute.NestHostAttribute, java.lang.classfile.attribute.NestMembersAttribute, java.lang.classfile.attribute.PermittedSubclassesAttribute, java.lang.classfile.attribute.RecordAttribute, java.lang.classfile.attribute.RuntimeInvisibleAnnotationsAttribute, java.lang.classfile.attribute.RuntimeInvisibleTypeAnnotationsAttribute, java.lang.classfile.attribute.RuntimeVisibleAnnotationsAttribute, java.lang.classfile.attribute.RuntimeVisibleTypeAnnotationsAttribute, java.lang.classfile.attribute.SignatureAttribute, java.lang.classfile.attribute.SourceDebugExtensionAttribute, java.lang.classfile.attribute.SourceFileAttribute, java.lang.classfile.attribute.SourceIDAttribute, java.lang.classfile.attribute.SyntheticAttribute, java.lang.classfile.attribute.UnknownAttribute
Comparing jdk-master and valhalla-csr-open

All Superinterfaces:
  `ClassFileElement`

All Known Subinterfaces:
  `AccessFlags, ClassFileVersion, CompilationIDAttribute, DeprecatedAttribute, EnclosingMethodAttribute, FieldModel, InnerClassesAttribute, Interfaces, LoadableDescriptorsAttributePREVIEW , 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, LoadableDescriptorsAttributePREVIEW , ModuleAttribute, ModuleHashesAttribute, ModuleMainClassAttribute, ModulePackagesAttribute, ModuleResolutionAttribute, ModuleTargetAttribute, NestHostAttribute, NestMembersAttribute, PermittedSubclassesAttribute, RecordAttribute, RuntimeInvisibleAnnotationsAttribute, RuntimeInvisibleTypeAnnotationsAttribute, RuntimeVisibleAnnotationsAttribute, RuntimeVisibleTypeAnnotationsAttribute, SignatureAttribute, SourceDebugExtensionAttribute, SourceFileAttribute, SourceIDAttribute, SyntheticAttribute, UnknownAttribute
`ClassElement` relies on preview features of the Java platform:

- `ClassElement` refers to one or more reflective preview APIs: `LoadableDescriptorsAttribute` .

Programs can only use `ClassElement` when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
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`

## Summary

Differences
| Elements | Comments | Descriptions | Total
Added | Changed | Removed | Added | Changed | Removed | Added | Changed | Removed
--- | --- | --- | --- | --- | --- | --- | --- | ---
ClassElement |  | 2 |  |  |  |  | 12 |  |  | 14
Total |  | 2 |  |  |  |  | 12 |  |  | 14