Package net.bytebuddy.implementation
Class MethodCall.ArgumentLoader.ForStackManipulation
- java.lang.Object
-
- net.bytebuddy.implementation.MethodCall.ArgumentLoader.ForStackManipulation
-
- All Implemented Interfaces:
InstrumentedType.Prepareable,MethodCall.ArgumentLoader,MethodCall.ArgumentLoader.ArgumentProvider,MethodCall.ArgumentLoader.Factory
- Enclosing interface:
- MethodCall.ArgumentLoader
@Enhance public static class MethodCall.ArgumentLoader.ForStackManipulation extends java.lang.Object implements MethodCall.ArgumentLoader, MethodCall.ArgumentLoader.ArgumentProvider, MethodCall.ArgumentLoader.Factory
Loads a stack manipulation resulting in a specific type as an argument.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.scaffold.InstrumentedType.Prepareable
InstrumentedType.Prepareable.NoOp
-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.MethodCall.ArgumentLoader
MethodCall.ArgumentLoader.ArgumentProvider, MethodCall.ArgumentLoader.Factory, MethodCall.ArgumentLoader.ForField, MethodCall.ArgumentLoader.ForInstance, MethodCall.ArgumentLoader.ForInstrumentedType, MethodCall.ArgumentLoader.ForMethodCall, MethodCall.ArgumentLoader.ForMethodParameter, MethodCall.ArgumentLoader.ForMethodParameterArray, MethodCall.ArgumentLoader.ForMethodParameterArrayElement, MethodCall.ArgumentLoader.ForNullConstant, MethodCall.ArgumentLoader.ForStackManipulation, MethodCall.ArgumentLoader.ForThisReference
-
-
Field Summary
Fields Modifier and Type Field Description private StackManipulationstackManipulationThe stack manipulation to load.private TypeDefinitiontypeDefinitionThe type of the resulting value.
-
Constructor Summary
Constructors Constructor Description ForStackManipulation(StackManipulation stackManipulation, java.lang.reflect.Type type)Creates an argument loader that loads a stack manipulation as an argument.ForStackManipulation(StackManipulation stackManipulation, TypeDefinition typeDefinition)Creates an argument loader that loads a stack manipulation as an argument.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description MethodCall.ArgumentLoader.ArgumentProvidermake(Implementation.Target implementationTarget)Creates an argument provider for the supplied implementation target.static MethodCall.ArgumentLoader.Factoryof(java.lang.Object value)Creates an argument loader that loads the supplied value as a constant.InstrumentedTypeprepare(InstrumentedType instrumentedType)Prepares a given instrumented type.java.util.List<MethodCall.ArgumentLoader>resolve(MethodDescription instrumentedMethod, MethodDescription invokedMethod)Resolves this provider to an argument loader for each provided argument.StackManipulationtoStackManipulation(ParameterDescription target, Assigner assigner, Assigner.Typing typing)Loads the argument that is represented by this instance onto the operand stack.
-
-
-
Field Detail
-
stackManipulation
private final StackManipulation stackManipulation
The stack manipulation to load.
-
typeDefinition
private final TypeDefinition typeDefinition
The type of the resulting value.
-
-
Constructor Detail
-
ForStackManipulation
public ForStackManipulation(StackManipulation stackManipulation, java.lang.reflect.Type type)
Creates an argument loader that loads a stack manipulation as an argument.- Parameters:
stackManipulation- The stack manipulation to load.type- The type of the resulting value.
-
ForStackManipulation
public ForStackManipulation(StackManipulation stackManipulation, TypeDefinition typeDefinition)
Creates an argument loader that loads a stack manipulation as an argument.- Parameters:
stackManipulation- The stack manipulation to load.typeDefinition- The type of the resulting value.
-
-
Method Detail
-
of
public static MethodCall.ArgumentLoader.Factory of(@MaybeNull java.lang.Object value)
Creates an argument loader that loads the supplied value as a constant. If the value cannot be represented in the constant pool, a field is created to store the value.- Parameters:
value- The value to load as an argument ornull.- Returns:
- An appropriate argument loader.
-
prepare
public InstrumentedType prepare(InstrumentedType instrumentedType)
Prepares a given instrumented type.- Specified by:
preparein interfaceInstrumentedType.Prepareable- Parameters:
instrumentedType- The instrumented type in its current form.- Returns:
- The prepared instrumented type.
-
make
public MethodCall.ArgumentLoader.ArgumentProvider make(Implementation.Target implementationTarget)
Creates an argument provider for the supplied implementation target.- Specified by:
makein interfaceMethodCall.ArgumentLoader.Factory- Parameters:
implementationTarget- The implementation target to use.- Returns:
- An appropriate argument provider.
-
resolve
public java.util.List<MethodCall.ArgumentLoader> resolve(MethodDescription instrumentedMethod, MethodDescription invokedMethod)
Resolves this provider to an argument loader for each provided argument.- Specified by:
resolvein interfaceMethodCall.ArgumentLoader.ArgumentProvider- Parameters:
instrumentedMethod- The instrumented method.invokedMethod- The invoked method.- Returns:
- A list of provided argument loaders.
-
toStackManipulation
public StackManipulation toStackManipulation(ParameterDescription target, Assigner assigner, Assigner.Typing typing)
Loads the argument that is represented by this instance onto the operand stack.- Specified by:
toStackManipulationin interfaceMethodCall.ArgumentLoader- Parameters:
target- The target parameter.assigner- The assigner to be used.typing- Indicates if dynamic type castings should be attempted for incompatible assignments.- Returns:
- The stack manipulation that loads the represented argument onto the stack.
-
-