Package net.bytebuddy.implementation
Class FixedValue.ForPoolValue
- java.lang.Object
-
- net.bytebuddy.implementation.FixedValue
-
- net.bytebuddy.implementation.FixedValue.ForPoolValue
-
- All Implemented Interfaces:
InstrumentedType.Prepareable
,ByteCodeAppender
,FixedValue.AssignerConfigurable
,Implementation
- Enclosing class:
- FixedValue
@Enhance protected static class FixedValue.ForPoolValue extends FixedValue implements FixedValue.AssignerConfigurable, ByteCodeAppender
A fixed value implementation that represents its fixed value as a value that is written to the instrumented class's constant pool.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.bytebuddy.implementation.FixedValue
FixedValue.AssignerConfigurable, FixedValue.ForArgument, FixedValue.ForNullValue, FixedValue.ForOriginType, FixedValue.ForPoolValue, FixedValue.ForThisValue, FixedValue.ForValue
-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.ByteCodeAppender
ByteCodeAppender.Compound, ByteCodeAppender.Simple, ByteCodeAppender.Size
-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.Implementation
Implementation.Composable, Implementation.Compound, Implementation.Context, Implementation.Simple, Implementation.SpecialMethodInvocation, Implementation.Target
-
-
Field Summary
Fields Modifier and Type Field Description private TypeDescription
loadedType
The type of the fixed value.private StackManipulation
valueLoadInstruction
The stack manipulation which is responsible for loading the fixed value onto the operand stack.-
Fields inherited from class net.bytebuddy.implementation.FixedValue
assigner, typing
-
-
Constructor Summary
Constructors Modifier Constructor Description private
ForPoolValue(Assigner assigner, Assigner.Typing typing, StackManipulation valueLoadInstruction, TypeDescription loadedType)
Creates a new constant pool fixed value implementation.protected
ForPoolValue(StackManipulation valueLoadInstruction, java.lang.Class<?> loadedType)
Creates a new constant pool fixed value implementation.protected
ForPoolValue(StackManipulation valueLoadInstruction, TypeDescription loadedType)
Creates a new constant pool fixed value implementation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ByteCodeAppender
appender(Implementation.Target implementationTarget)
Creates a byte code appender that determines the implementation of the instrumented type's methods.ByteCodeAppender.Size
apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod)
Applies this byte code appender to a type creation process.InstrumentedType
prepare(InstrumentedType instrumentedType)
Prepares a given instrumented type.Implementation
withAssigner(Assigner assigner, Assigner.Typing typing)
Defines an explicit assigner to this fixed value implementation.
-
-
-
Field Detail
-
valueLoadInstruction
private final StackManipulation valueLoadInstruction
The stack manipulation which is responsible for loading the fixed value onto the operand stack.
-
loadedType
private final TypeDescription loadedType
The type of the fixed value.
-
-
Constructor Detail
-
ForPoolValue
protected ForPoolValue(StackManipulation valueLoadInstruction, java.lang.Class<?> loadedType)
Creates a new constant pool fixed value implementation.- Parameters:
valueLoadInstruction
- The instruction that is responsible for loading the constant pool value onto the operand stack.loadedType
- A type description representing the loaded type.
-
ForPoolValue
protected ForPoolValue(StackManipulation valueLoadInstruction, TypeDescription loadedType)
Creates a new constant pool fixed value implementation.- Parameters:
valueLoadInstruction
- The instruction that is responsible for loading the constant pool value onto the operand stack.loadedType
- A type description representing the loaded type.
-
ForPoolValue
private ForPoolValue(Assigner assigner, Assigner.Typing typing, StackManipulation valueLoadInstruction, TypeDescription loadedType)
Creates a new constant pool fixed value implementation.- Parameters:
valueLoadInstruction
- The instruction that is responsible for loading the constant pool value onto the operand stack.loadedType
- A type description representing the loaded type.assigner
- The assigner to use for assigning the fixed value to the return type of the instrumented value.typing
- Indicates if dynamic type castings should be attempted for incompatible assignments.
-
-
Method Detail
-
withAssigner
public Implementation withAssigner(Assigner assigner, Assigner.Typing typing)
Defines an explicit assigner to this fixed value implementation.- Specified by:
withAssigner
in interfaceFixedValue.AssignerConfigurable
- Parameters:
assigner
- The assigner to use for assigning the fixed value to the return type of the instrumented value.typing
- Indicates if dynamic type castings should be attempted for incompatible assignments.- Returns:
- A fixed value implementation that makes use of the given assigner.
-
prepare
public InstrumentedType prepare(InstrumentedType instrumentedType)
Prepares a given instrumented type.- Specified by:
prepare
in interfaceInstrumentedType.Prepareable
- Parameters:
instrumentedType
- The instrumented type in its current form.- Returns:
- The prepared instrumented type.
-
appender
public ByteCodeAppender appender(Implementation.Target implementationTarget)
Creates a byte code appender that determines the implementation of the instrumented type's methods.- Specified by:
appender
in interfaceImplementation
- Parameters:
implementationTarget
- The target of the current implementation.- Returns:
- A byte code appender for implementing methods delegated to this implementation. This byte code appender
is also responsible for handling methods that were added by this implementation on the call to
InstrumentedType.Prepareable.prepare(InstrumentedType)
.
-
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.
-
-