Class MethodConstant
- java.lang.Object
-
- net.bytebuddy.implementation.bytecode.constant.MethodConstant
-
- All Implemented Interfaces:
StackManipulation
- Direct Known Subclasses:
MethodConstant.ForConstructor,MethodConstant.ForMethod
public abstract class MethodConstant extends java.lang.Object implements StackManipulation
Represents the creation of aMethodvalue which can be created from a given set of constant pool values and can therefore be considered a constant in the broader meaning.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classMethodConstant.CachedConstructorRepresents a cached constructor for aMethodConstant.protected static classMethodConstant.CachedMethodRepresents a cached method for aMethodConstant.static interfaceMethodConstant.CanCacheRepresents aMethodConstantthat is directly loaded onto the operand stack without caching the value.protected static classMethodConstant.CanCacheIllegalRepresents a method constant that cannot be represented by Java's reflection API.protected static classMethodConstant.ForConstructorCreates aMethodConstantfor loading aConstructorinstance onto the operand stack.protected static classMethodConstant.ForMethodCreates aMethodConstantfor loading aMethodinstance onto the operand stack.-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.StackManipulation
StackManipulation.Compound, StackManipulation.Illegal, StackManipulation.Size, StackManipulation.Trivial
-
-
Field Summary
Fields Modifier and Type Field Description protected MethodDescription.InDefinedShapemethodDescriptionA description of the method to be loaded onto the stack.
-
Constructor Summary
Constructors Modifier Constructor Description protectedMethodConstant(MethodDescription.InDefinedShape methodDescription)Creates a new method constant.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract MethodDescriptionaccessorMethod()Returns the method for loading a declared method or constructor onto the operand stack.StackManipulation.Sizeapply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext)Applies the stack manipulation that is described by this instance.StackManipulationcached()Returns a cached version of this method constant as specified byMethodConstant.CachedMethodandMethodConstant.CachedConstructor.static MethodConstant.CanCacheforMethod(MethodDescription.InDefinedShape methodDescription)Creates a stack manipulation that loads a method constant onto the operand stack.booleanisValid()Determines if this stack manipulation is valid.protected abstract StackManipulationpreparation()Returns a stack manipulation that loads the values that are required for loading a method constant onto the operand stack.
-
-
-
Field Detail
-
methodDescription
protected final MethodDescription.InDefinedShape methodDescription
A description of the method to be loaded onto the stack.
-
-
Constructor Detail
-
MethodConstant
protected MethodConstant(MethodDescription.InDefinedShape methodDescription)
Creates a new method constant.- Parameters:
methodDescription- The method description for which theMethodrepresentation should be created.
-
-
Method Detail
-
forMethod
public static MethodConstant.CanCache forMethod(MethodDescription.InDefinedShape methodDescription)
Creates a stack manipulation that loads a method constant onto the operand stack.- Parameters:
methodDescription- The method to be loaded onto the stack.- Returns:
- A stack manipulation that assigns a method constant for the given method description.
-
isValid
public boolean isValid()
Description copied from interface:StackManipulationDetermines if this stack manipulation is valid.- Specified by:
isValidin interfaceStackManipulation- Returns:
- If
false, this manipulation cannot be applied and should throw an exception.
-
apply
public StackManipulation.Size apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext)
Description copied from interface:StackManipulationApplies the stack manipulation that is described by this instance.- Specified by:
applyin interfaceStackManipulation- Parameters:
methodVisitor- The method visitor used to write the method implementation to.implementationContext- The context of the current implementation.- Returns:
- The changes to the size of the operand stack that are implied by this stack manipulation.
-
preparation
protected abstract StackManipulation preparation()
Returns a stack manipulation that loads the values that are required for loading a method constant onto the operand stack.- Returns:
- A stack manipulation for loading a method or constructor onto the operand stack.
-
accessorMethod
protected abstract MethodDescription accessorMethod()
Returns the method for loading a declared method or constructor onto the operand stack.- Returns:
- The method for loading a declared method or constructor onto the operand stack.
-
cached
public StackManipulation cached()
Returns a cached version of this method constant as specified byMethodConstant.CachedMethodandMethodConstant.CachedConstructor.- Returns:
- A cached version of this method constant.
-
-