Package net.bytebuddy.implementation
Class DefaultMethodCall.Appender
- java.lang.Object
-
- net.bytebuddy.implementation.DefaultMethodCall.Appender
-
- All Implemented Interfaces:
ByteCodeAppender
- Enclosing class:
- DefaultMethodCall
@Enhance protected static class DefaultMethodCall.Appender extends java.lang.Object implements ByteCodeAppender
The appender for implementing aDefaultMethodCall
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.ByteCodeAppender
ByteCodeAppender.Compound, ByteCodeAppender.Simple, ByteCodeAppender.Size
-
-
Field Summary
Fields Modifier and Type Field Description private Implementation.Target
implementationTarget
The implementation target of this appender.private java.util.Set<TypeDescription>
nonPrioritizedInterfaces
The relevant non-prioritized interfaces to be considered by this appender.private java.util.List<TypeDescription>
prioritizedInterfaces
The relevant prioritized interfaces to be considered by this appender.
-
Constructor Summary
Constructors Modifier Constructor Description protected
Appender(Implementation.Target implementationTarget, java.util.List<TypeDescription> prioritizedInterfaces)
Creates a new appender for implementing aDefaultMethodCall
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ByteCodeAppender.Size
apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod)
Applies this byte code appender to a type creation process.private StackManipulation
locateDefault(MethodDescription methodDescription)
Locates a special method invocation to be invoked from a given method.
-
-
-
Field Detail
-
implementationTarget
private final Implementation.Target implementationTarget
The implementation target of this appender.
-
prioritizedInterfaces
private final java.util.List<TypeDescription> prioritizedInterfaces
The relevant prioritized interfaces to be considered by this appender.
-
nonPrioritizedInterfaces
@ValueHandling(IGNORE) private final java.util.Set<TypeDescription> nonPrioritizedInterfaces
The relevant non-prioritized interfaces to be considered by this appender.
-
-
Constructor Detail
-
Appender
protected Appender(Implementation.Target implementationTarget, java.util.List<TypeDescription> prioritizedInterfaces)
Creates a new appender for implementing aDefaultMethodCall
.- Parameters:
implementationTarget
- The implementation target of this appender.prioritizedInterfaces
- The relevant prioritized interfaces to be considered by this appender.
-
-
Method Detail
-
apply
public ByteCodeAppender.Size apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod)
Applies this byte code appender to a type creation process.- Specified by:
apply
in interfaceByteCodeAppender
- Parameters:
methodVisitor
- The method visitor to which the byte code appender writes its code to.implementationContext
- The implementation context of the current type creation process.instrumentedMethod
- The method that is the target of the instrumentation.- Returns:
- The required size for the applied byte code to run.
-
locateDefault
private StackManipulation locateDefault(MethodDescription methodDescription)
Locates a special method invocation to be invoked from a given method.- Parameters:
methodDescription
- The method that is currently instrumented.- Returns:
- A potentially illegal stack manipulation representing the default method invocation for the given method.
-
-