Interface CodeTransform
- All Superinterfaces:
ClassFileTransform<CodeTransform, CodeElement, CodeBuilder>
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface
public non-sealed interface CodeTransform
extends ClassFileTransform<CodeTransform, CodeElement, CodeBuilder>
A transformation on streams of
CodeElement
. The stream can come
from a CodeModel
, or a handler to a CodeBuilder
as in
CodeBuilder.transforming(java.lang.classfile.CodeTransform, java.util.function.Consumer<java.lang.classfile.CodeBuilder>)
.
Refer to ClassFileTransform
for general guidance and caution around
the use of transforms for structures in the class
file format.
A code transform can be lifted to a method or a class transform via MethodTransform.transformingCode(CodeTransform)
and ClassTransform.transformingMethodBodies(CodeTransform)
, transforming only
the CodeModel
within those structures and passing all other elements
to the builders.
- Since:
- 24
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final CodeTransform
A code transform that passes all elements to the builder. -
Method Summary
Modifier and TypeMethodDescriptiondefault CodeTransform
Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.static CodeTransform
endHandler
(Consumer<CodeBuilder> finisher) Creates a code transform that passes each element through to the builder, and calls the specified function when transformation is complete.static CodeTransform
ofStateful
(Supplier<CodeTransform> supplier) Creates a stateful code transform from aSupplier
.Methods declared in interface java.lang.classfile.ClassFileTransform
accept, atEnd, atStart
-
Field Details
-
ACCEPT_ALL
A code transform that passes all elements to the builder.
-
-
Method Details
-
ofStateful
-
endHandler
Creates a code transform that passes each element through to the builder, and calls the specified function when transformation is complete.- Parameters:
finisher
- the function to call when transformation is complete- Returns:
- the code transform
-
andThen
Description copied from interface:ClassFileTransform
Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.This method is implemented by the Class-File API. Users usually don't have sufficient access to Class-File API functionalities to override this method correctly for generic downstream transforms.
- Specified by:
andThen
in interfaceClassFileTransform<CodeTransform, CodeElement, CodeBuilder>
- Implementation Requirements:
- The default implementation returns this code transform chained with another code transform from the argument. Chaining of two transforms requires to involve a chained builder serving as a target builder for this transform and also as a source of elements for the downstream transform.
- Parameters:
t
- the downstream transform- Returns:
- the chained transform
-