# Interface ClassFileElement

All Known Subinterfaces:
  `AccessFlags, AnnotationDefaultAttribute, ArrayLoadInstruction, ArrayStoreInstruction, Attribute<A>, AttributedElement, BootstrapMethodsAttribute, BranchInstruction, CharacterRange, CharacterRangeTableAttribute, ClassElement, ClassFileVersion, ClassModel, CodeAttribute, CodeElement, CodeModel, CompilationIDAttribute, CompoundElement<E>, ConstantInstruction, ConstantInstruction.ArgumentConstantInstruction, ConstantInstruction.IntrinsicConstantInstruction, ConstantInstruction.LoadConstantInstruction, ConstantValueAttribute, ConvertInstruction, DeprecatedAttribute, DiscontinuedInstruction, DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction, EnclosingMethodAttribute, ExceptionCatch, ExceptionsAttribute, FieldElement, FieldInstruction, FieldModel, IncrementInstruction, InnerClassesAttribute, Instruction, Interfaces, InvokeDynamicInstruction, InvokeInstruction, LabelTarget, LineNumber, LineNumberTableAttribute, LoadInstruction, LocalVariable, LocalVariableTableAttribute, LocalVariableType, LocalVariableTypeTableAttribute, LookupSwitchInstruction, MethodElement, MethodModel, MethodParametersAttribute, ModuleAttribute, ModuleHashesAttribute, ModuleMainClassAttribute, ModulePackagesAttribute, ModuleResolutionAttribute, ModuleTargetAttribute, MonitorInstruction, NestHostAttribute, NestMembersAttribute, NewMultiArrayInstruction, NewObjectInstruction, NewPrimitiveArrayInstruction, NewReferenceArrayInstruction, NopInstruction, OperatorInstruction, PermittedSubclassesAttribute, PseudoInstruction, RecordAttribute, RecordComponentInfo, ReturnInstruction, RuntimeInvisibleAnnotationsAttribute, RuntimeInvisibleParameterAnnotationsAttribute, RuntimeInvisibleTypeAnnotationsAttribute, RuntimeVisibleAnnotationsAttribute, RuntimeVisibleParameterAnnotationsAttribute, RuntimeVisibleTypeAnnotationsAttribute, SignatureAttribute, SourceDebugExtensionAttribute, SourceFileAttribute, SourceIDAttribute, StackInstruction, StackMapTableAttribute, StoreInstruction, Superclass, SyntheticAttribute, TableSwitchInstruction, ThrowInstruction, TypeCheckInstruction, UnknownAttribute`

All Known Implementing Classes:
  `CustomAttribute`

public sealed interface ClassFileElement permits AttributedElement, CompoundElement<E>, Attribute<A>, ClassElement, CodeElement, FieldElement, MethodElement
Marker interface for structures with special capabilities in the `class` file format. `AttributedElement` indicates a structure has `Attribute`s. `CompoundElement` indicates a structure can be viewed as a composition of member structures, whose memberships are marked by `ClassElement`, `MethodElement`, `FieldElement`, or `CodeElement`.

## Membership Elements

`ClassModel`, `MethodModel`, `FieldModel`, and `CodeModel` each has a dedicated interface marking its member structures: `ClassElement`, `MethodElement`, `FieldElement`, and `CodeElement`. They can be supplied to a `ClassBuilder`, a `MethodBuilder`, a `FieldBuilder`, or a `CodeBuilder` to be included as members of the built model. Unless otherwise specified, these structures are delivered during the traversal of the corresponding models. Some of these elements may appear at most once or exactly once in the traversal of the models; such elements have special treatment by `ClassFileBuilder` and are specified in their modeling interfaces. If such elements appear multiple times during traversal, the last occurrence should be used and all previous instances should be discarded.

These membership element marker interfaces are sealed; future versions of the Java SE Platform may define new elements to the sealed hierarchy when the `class` file format for the Java Platform evolves. Using an exhaustive pattern matching switch over these hierarchies indicates the user only wish the processing code to run on a specific version of Java Platform, and will fail if unknown new elements are encountered.

Since:
  24