APIdia Launch Partner
Top Description Fields Methods
java.lang.classfile

public non-sealed Interface CodeTransform

extends ClassFileTransform<CodeTransform, CodeElement, CodeBuilder>
Known Direct Subinterfaces
jdk.internal.classfile.components.CodeLocalsShifter, jdk.internal.classfile.components.CodeRelabeler, jdk.internal.classfile.components.CodeStackTracker, jdk.internal.classfile.impl.TransformImpl.UnresolvedCodeTransform
Annotations
@FunctionalInterface
Imports
java.util.function.Consumer, .Supplier, jdk.internal.classfile.impl.TransformImpl

A transformation on streams of CodeElement. The stream can come from a CodeModel, or a handler to a CodeBuilder as in CodeBuilder#transforming.

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
CodeModel, MethodBuilder#transformCode, CodeBuilder#transforming

Field Summary

Modifier and TypeField and Description
public static final CodeTransform
ACCEPT_ALL

A code transform that passes all elements to the builder.

Method Summary

Modifier and TypeMethod and Description
public default CodeTransform
andThen(CodeTransform t)

Implements java.lang.classfile.ClassFileTransform.andThen.

Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.

public static CodeTransform

Returns:

the code transform
endHandler
(Consumer<CodeBuilder>
the function to call when transformation is complete
finisher
)

Creates a code transform that passes each element through to the builder, and calls the specified function when transformation is complete.

public static CodeTransform

Returns:

the stateful code transform
ofStateful
(Supplier<CodeTransform>
a Supplier that produces a fresh transform object for each traversal
supplier
)

Creates a stateful code transform from a Supplier.

Inherited from java.lang.classfile.ClassFileTransform:
acceptatEndatStart

Field Detail

ACCEPT_ALLback to summary
public static final CodeTransform ACCEPT_ALL

A code transform that passes all elements to the builder.

Method Detail

andThenback to summary
public default CodeTransform andThen(CodeTransform t)

Implements java.lang.classfile.ClassFileTransform.andThen.

Doc from java.lang.classfile.ClassFileTransform.andThen.

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.

Implementation Specification

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.

Annotations
@Override
endHandlerback to summary
public 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.

Parameters
finisher:Consumer<CodeBuilder>

the function to call when transformation is complete

Returns:CodeTransform

the code transform

ofStatefulback to summary
public static CodeTransform ofStateful(Supplier<CodeTransform> supplier)

Creates a stateful code transform from a Supplier. The supplier will be invoked for each transformation.

Parameters
supplier:Supplier<CodeTransform>

a Supplier that produces a fresh transform object for each traversal

Returns:CodeTransform

the stateful code transform