Package net.bytebuddy.asm
Class MemberSubstitution.Substitution.Chain
- java.lang.Object
-
- net.bytebuddy.asm.MemberSubstitution.Substitution.Chain
-
- All Implemented Interfaces:
MemberSubstitution.Substitution
- Enclosing interface:
- MemberSubstitution.Substitution
@Enhance public static class MemberSubstitution.Substitution.Chain extends java.lang.Object implements MemberSubstitution.Substitution
A substitution chain allows for chaining multiple substitution steps for a byte code element being replaced.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classMemberSubstitution.Substitution.Chain.FactoryA factory for creating a substitution chain.static interfaceMemberSubstitution.Substitution.Chain.StepRepresents a step of a substitution chain.-
Nested classes/interfaces inherited from interface net.bytebuddy.asm.MemberSubstitution.Substitution
MemberSubstitution.Substitution.Chain, MemberSubstitution.Substitution.ForFieldAccess, MemberSubstitution.Substitution.ForMethodInvocation, MemberSubstitution.Substitution.ForValue, MemberSubstitution.Substitution.Stubbing
-
-
Field Summary
Fields Modifier and Type Field Description private AssignerassignerThe assigner to use.private java.util.List<MemberSubstitution.Substitution.Chain.Step>stepsThe substitution steps to apply.private Assigner.TypingtypingThe typing of the assignment to use.
-
Constructor Summary
Constructors Modifier Constructor Description protectedChain(Assigner assigner, Assigner.Typing typing, java.util.List<MemberSubstitution.Substitution.Chain.Step> steps)Creates a new substitution chain.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description StackManipulationresolve(TypeDescription receiver, ByteCodeElement.Member original, TypeList.Generic parameters, TypeDescription.Generic result, JavaConstant.MethodHandle methodHandle, StackManipulation stackManipulation, int freeOffset)Resolves this substitution into a stack manipulation.static MemberSubstitution.Substitution.Chain.Factorywith(Assigner assigner, Assigner.Typing typing)Creates a new substitution chain.static MemberSubstitution.Substitution.Chain.FactorywithDefaultAssigner()Creates a new substitution chain that uses a default assigner and static typing.
-
-
-
Field Detail
-
assigner
private final Assigner assigner
The assigner to use.
-
typing
private final Assigner.Typing typing
The typing of the assignment to use.
-
steps
private final java.util.List<MemberSubstitution.Substitution.Chain.Step> steps
The substitution steps to apply.
-
-
Constructor Detail
-
Chain
protected Chain(Assigner assigner, Assigner.Typing typing, java.util.List<MemberSubstitution.Substitution.Chain.Step> steps)
Creates a new substitution chain.- Parameters:
assigner- The assigner to use.typing- The typing of the assignment to use.steps- The substitution steps to apply.
-
-
Method Detail
-
withDefaultAssigner
public static MemberSubstitution.Substitution.Chain.Factory withDefaultAssigner()
Creates a new substitution chain that uses a default assigner and static typing.- Returns:
- A new substitution chain.
-
with
public static MemberSubstitution.Substitution.Chain.Factory with(Assigner assigner, Assigner.Typing typing)
Creates a new substitution chain.- Parameters:
assigner- The assigner to use.typing- The typing of the assignment to use.- Returns:
- A new substitution chain.
-
resolve
public StackManipulation resolve(TypeDescription receiver, ByteCodeElement.Member original, TypeList.Generic parameters, TypeDescription.Generic result, JavaConstant.MethodHandle methodHandle, StackManipulation stackManipulation, int freeOffset)
Resolves this substitution into a stack manipulation.- Specified by:
resolvein interfaceMemberSubstitution.Substitution- Parameters:
receiver- The target type on which a member is accessed.original- The field, method or constructor that is substituted.parameters- All parameters that serve as input to this access.result- The result that is expected from the interaction orvoidif no result is expected.methodHandle- A method handle describing the substituted expression.stackManipulation- The original byte code expression that is being executed.freeOffset- The first free offset of the local variable array that can be used for storing values.- Returns:
- A stack manipulation that represents the access.
-
-