Interface CodeModel
- All Superinterfaces:
AttributedElement, ClassFileElement, CompoundElement<CodeElement>, Iterable<CodeElement>, MethodElement
- All Known Subinterfaces:
CodeAttribute
Code attribute). A Code
attribute is viewed as a composition of CodeElements, which is the only way to access Instructions; the
order of elements of a code model is significant.
A CodeModel is obtained from MethodModel.code(), or in the
traversal of the member elements of a method.
MethodBuilder.withCode(Consumer) is the main way to build code models. MethodBuilder.transformCode(CodeModel, CodeTransform) and CodeBuilder.transforming(CodeTransform, Consumer) allow
creating new Code attributes by selectively processing the original
code elements and directing the results to a code builder.
A Code attribute holds attributes, but they are usually not member
elements, but are decomposed to PseudoInstruction, accessible
according to ClassFile.DeadLabelsOption, ClassFile.DebugElementsOption, and
ClassFile.LineNumbersOption. StackMapTableAttribute can only be
accessed via explicit attribute reading, as it
is considered a derived property from the code body.
- See Java Virtual Machine Specification:
-
4.7.3 The
CodeAttribute - Since:
- 24
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionReturns the exception table of the method.parent()Returns the enclosing method, if known.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<CodeElement> Returns aListcontaining all member elements in this compound element.default Stream<CodeElement> Returns aStreamcontaining all member elements in this compound element.voidforEach(Consumer<? super CodeElement> consumer) Invokes the provided handler with each member element in this compound element.default Iterator<CodeElement> 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<CodeElement> Creates aSpliteratorover the elements described by thisIterable.
-
Method Details
-
parent
Optional<MethodModel> parent()Returns the enclosing method, if known.- Returns:
- the enclosing method, if known
-
exceptionHandlers
List<ExceptionCatch> exceptionHandlers()Returns the exception table of the method. The exception table is also modeled byExceptionCatchelements in the streaming view.- Returns:
- the exception table of the method
-