Class MemberSubstitution.Substitution.Chain<S extends MemberSubstitution.Target>
java.lang.Object
net.bytebuddy.asm.MemberSubstitution.Substitution.Chain<S>
- Type Parameters:
S- The type of the matched target.
- All Implemented Interfaces:
MemberSubstitution.Substitution<S>
- Enclosing interface:
MemberSubstitution.Substitution<T extends MemberSubstitution.Target>
@Enhance
public static class MemberSubstitution.Substitution.Chain<S extends MemberSubstitution.Target>
extends Object
implements MemberSubstitution.Substitution<S>
A substitution chain allows for chaining multiple substitution steps for a byte code element being replaced.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA factory for creating a substitution chain.static interfaceRepresents a step of a substitution chain.Nested classes/interfaces inherited from interface MemberSubstitution.Substitution
MemberSubstitution.Substitution.Chain<S>, MemberSubstitution.Substitution.ForFieldAccess, MemberSubstitution.Substitution.ForMethodInvocation, MemberSubstitution.Substitution.ForValue, MemberSubstitution.Substitution.Stubbing -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AssignerThe assigner to use.private final List<MemberSubstitution.Substitution.Chain.Step<? super S>> The substitution steps to apply.private final Assigner.TypingThe typing of the assignment to use. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedChain(Assigner assigner, Assigner.Typing typing, List<MemberSubstitution.Substitution.Chain.Step<? super S>> steps) Creates a new substitution chain. -
Method Summary
Modifier and TypeMethodDescriptionresolve(S target, TypeList.Generic parameters, TypeDescription.Generic result, JavaConstant.MethodHandle methodHandle, StackManipulation stackManipulation, int freeOffset) Resolves this substitution into a stack manipulation.static <U extends MemberSubstitution.Target>
MemberSubstitution.Substitution.Chain.Factory<U> with(Assigner assigner, Assigner.Typing typing) Creates a new substitution chain.static <U extends MemberSubstitution.Target>
MemberSubstitution.Substitution.Chain.Factory<U> Creates a new substitution chain that uses a default assigner and static typing.
-
Field Details
-
assigner
The assigner to use. -
typing
The typing of the assignment to use. -
steps
private final List<MemberSubstitution.Substitution.Chain.Step<? super S extends MemberSubstitution.Target>> stepsThe substitution steps to apply.
-
-
Constructor Details
-
Chain
protected Chain(Assigner assigner, Assigner.Typing typing, List<MemberSubstitution.Substitution.Chain.Step<? super S>> 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 Details
-
withDefaultAssigner
public static <U extends MemberSubstitution.Target> MemberSubstitution.Substitution.Chain.Factory<U> withDefaultAssigner()Creates a new substitution chain that uses a default assigner and static typing.- Type Parameters:
U- The type of the matched target.- Returns:
- A new substitution chain.
-
with
public static <U extends MemberSubstitution.Target> MemberSubstitution.Substitution.Chain.Factory<U> with(Assigner assigner, Assigner.Typing typing) Creates a new substitution chain.- Type Parameters:
U- The type of the matched target.- Parameters:
assigner- The assigner to use.typing- The typing of the assignment to use.- Returns:
- A new substitution chain.
-
resolve
public StackManipulation resolve(S target, 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<S extends MemberSubstitution.Target>- Parameters:
target- The targeted member 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.
-