Interface ClassTransform
- All Superinterfaces:
ClassFileTransform<ClassTransform, ClassElement, ClassBuilder>
- 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 ClassTransform
extends ClassFileTransform<ClassTransform, ClassElement, ClassBuilder>
A transformation on streams of
ClassElement
.
Refer to ClassFileTransform
for general guidance and caution around
the use of transforms for structures in the class
file format.
- Since:
- 24
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ClassTransform
A class transform that passes all elements to the builder. -
Method Summary
Modifier and TypeMethodDescriptiondefault ClassTransform
Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.static ClassTransform
dropping
(Predicate<ClassElement> filter) Creates a class transform that passes each element through to the builder, except for those that the suppliedPredicate
returns true for.static ClassTransform
endHandler
(Consumer<ClassBuilder> finisher) Creates a class transform that passes each element through to the builder, and calls the specified function when transformation is complete.static ClassTransform
ofStateful
(Supplier<ClassTransform> supplier) Creates a stateful class transform from aSupplier
.static ClassTransform
transformingFields
(FieldTransform xform) Creates a class transform that transformsFieldModel
elements with the supplied field transform, passing other elements through to the builder.static ClassTransform
Creates a class transform that transforms theCodeAttribute
(method body) ofMethodModel
elements with the supplied code transform, passing other elements through to the builder.static ClassTransform
transformingMethodBodies
(Predicate<MethodModel> filter, CodeTransform xform) Creates a class transform that transforms theCodeAttribute
(method body) ofMethodModel
elements with the supplied code transform for methods that the suppliedPredicate
returns true for, passing other elements through to the builder.static ClassTransform
Creates a class transform that transformsMethodModel
elements with the supplied method transform, passing other elements through to the builder.static ClassTransform
transformingMethods
(Predicate<MethodModel> filter, MethodTransform xform) Creates a class transform that transformsMethodModel
elements with the supplied method transform for methods that the suppliedPredicate
returns true for, passing other elements through to the builder.Methods declared in interface java.lang.classfile.ClassFileTransform
accept, atEnd, atStart
-
Field Details
-
ACCEPT_ALL
A class transform that passes all elements to the builder.
-
-
Method Details
-
ofStateful
-
endHandler
Creates a class 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 class transform
-
dropping
Creates a class transform that passes each element through to the builder, except for those that the suppliedPredicate
returns true for.- Parameters:
filter
- the predicate that determines which elements to drop- Returns:
- the class transform
-
transformingMethods
Creates a class transform that transformsMethodModel
elements with the supplied method transform for methods that the suppliedPredicate
returns true for, passing other elements through to the builder.- Parameters:
filter
- a predicate that determines which methods to transformxform
- the method transform- Returns:
- the class transform
-
transformingMethods
Creates a class transform that transformsMethodModel
elements with the supplied method transform, passing other elements through to the builder.- Parameters:
xform
- the method transform- Returns:
- the class transform
-
transformingMethodBodies
Creates a class transform that transforms theCodeAttribute
(method body) ofMethodModel
elements with the supplied code transform for methods that the suppliedPredicate
returns true for, passing other elements through to the builder.- Parameters:
filter
- a predicate that determines which methods to transformxform
- the code transform- Returns:
- the class transform
-
transformingMethodBodies
Creates a class transform that transforms theCodeAttribute
(method body) ofMethodModel
elements with the supplied code transform, passing other elements through to the builder.- Parameters:
xform
- the code transform- Returns:
- the class transform
-
transformingFields
Creates a class transform that transformsFieldModel
elements with the supplied field transform, passing other elements through to the builder.- Parameters:
xform
- the field transform- Returns:
- the class 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<ClassTransform, ClassElement, ClassBuilder>
- Implementation Requirements:
- The default implementation returns this class transform chained with another class 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
-