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 ClassTransformA class transform that passes all elements to the builder. -
Method Summary
Modifier and TypeMethodDescriptiondefault ClassTransformChain this transform with another; elements presented to the builder of this transform will become the input to the next transform.static ClassTransformdropping(Predicate<ClassElement> filter) Creates a class transform that passes each element through to the builder, except for those that the suppliedPredicatereturns true for.static ClassTransformendHandler(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 ClassTransformofStateful(Supplier<ClassTransform> supplier) Creates a stateful class transform from aSupplier.static ClassTransformtransformingFields(FieldTransform xform) Creates a class transform that transformsFieldModelelements with the supplied field transform, passing other elements through to the builder.static ClassTransformCreates a class transform that transforms theCodeAttribute(method body) ofMethodModelelements with the supplied code transform, passing other elements through to the builder.static ClassTransformtransformingMethodBodies(Predicate<MethodModel> filter, CodeTransform xform) Creates a class transform that transforms theCodeAttribute(method body) ofMethodModelelements with the supplied code transform for methods that the suppliedPredicatereturns true for, passing other elements through to the builder.static ClassTransformCreates a class transform that transformsMethodModelelements with the supplied method transform, passing other elements through to the builder.static ClassTransformtransformingMethods(Predicate<MethodModel> filter, MethodTransform xform) Creates a class transform that transformsMethodModelelements with the supplied method transform for methods that the suppliedPredicatereturns 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 suppliedPredicatereturns true for.- Parameters:
filter- the predicate that determines which elements to drop- Returns:
- the class transform
-
transformingMethods
Creates a class transform that transformsMethodModelelements with the supplied method transform for methods that the suppliedPredicatereturns 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 transformsMethodModelelements 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) ofMethodModelelements with the supplied code transform for methods that the suppliedPredicatereturns 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) ofMethodModelelements 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 transformsFieldModelelements 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:ClassFileTransformChain 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:
andThenin 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
-