Class FieldAccessor.ForSetter<T>
java.lang.Object
net.bytebuddy.implementation.FieldAccessor
net.bytebuddy.implementation.FieldAccessor.ForSetter<T>
- Type Parameters:
T- The type of the value that is initialized per instrumented type.
- All Implemented Interfaces:
InstrumentedType.Prepareable, Implementation, Implementation.Composable
- Direct Known Subclasses:
FieldAccessor.ForSetter.OfConstantValue, FieldAccessor.ForSetter.OfDefaultValue, FieldAccessor.ForSetter.OfFieldValue, FieldAccessor.ForSetter.OfParameterValue, FieldAccessor.ForSetter.OfReferenceValue
- Enclosing class:
FieldAccessor
@Enhance
protected abstract static class FieldAccessor.ForSetter<T>
extends FieldAccessor
implements Implementation.Composable
A field accessor for a field setter.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classAn appender to implement a field setter.protected static classAn instrumentation that sets a constant value to a field.protected static classA setter instrumentation that sets anullor a primitive type's default value.protected static classA setter that reads a value of another field and sets this value.protected static classA setter instrumentation for a parameter value.protected static classAn instrumentation that sets a field to a reference value that is stored in a static field of the instrumented type.protected static enumA termination handler is responsible for handling a field accessor's return.Nested classes/interfaces inherited from class FieldAccessor
FieldAccessor.AssignerConfigurable, FieldAccessor.FieldLocation, FieldAccessor.FieldNameExtractor, FieldAccessor.ForImplicitProperty, FieldAccessor.ForSetter<T>, FieldAccessor.OwnerTypeLocatable, FieldAccessor.PropertyConfigurableNested classes/interfaces inherited from interface Implementation
Implementation.Composable, Implementation.Compound, Implementation.Context, Implementation.Simple, Implementation.SpecialMethodInvocation, Implementation.TargetNested classes/interfaces inherited from interface InstrumentedType.Prepareable
InstrumentedType.Prepareable.NoOp -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final FieldAccessor.ForSetter.TerminationHandlerThe termination handler to apply.Fields inherited from class FieldAccessor
assigner, fieldLocation, typing -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedForSetter(FieldAccessor.FieldLocation fieldLocation, Assigner assigner, Assigner.Typing typing, FieldAccessor.ForSetter.TerminationHandler terminationHandler) Creates a new field accessor for a setter instrumentation. -
Method Summary
Modifier and TypeMethodDescriptionappender(Implementation.Target implementationTarget) Creates a byte code appender that determines the implementation of the instrumented type's methods.protected abstract Tinitialize(TypeDescription instrumentedType) Initializes a value to be used during method instrumentation.protected abstract StackManipulationresolve(T initialized, FieldDescription fieldDescription, TypeDescription instrumentedType, MethodDescription instrumentedMethod) Resolves the stack manipulation to load the value being set.Methods inherited from class FieldAccessor
of, of, of, of, of, ofBeanProperty, ofFieldMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Implementation.Composable
andThen, andThenMethods inherited from interface InstrumentedType.Prepareable
prepare
-
Field Details
-
terminationHandler
The termination handler to apply.
-
-
Constructor Details
-
ForSetter
protected ForSetter(FieldAccessor.FieldLocation fieldLocation, Assigner assigner, Assigner.Typing typing, FieldAccessor.ForSetter.TerminationHandler terminationHandler) Creates a new field accessor for a setter instrumentation.- Parameters:
fieldLocation- The field's location.assigner- The assigner to use.typing- Indicates if dynamic type castings should be attempted for incompatible assignments.terminationHandler- The termination handler to apply.
-
-
Method Details
-
appender
Creates a byte code appender that determines the implementation of the instrumented type's methods.- Specified by:
appenderin 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).
-
initialize
Initializes a value to be used during method instrumentation.- Parameters:
instrumentedType- The instrumented type.- Returns:
- The initialized value.
-
resolve
protected abstract StackManipulation resolve(@MaybeNull T initialized, FieldDescription fieldDescription, TypeDescription instrumentedType, MethodDescription instrumentedMethod) Resolves the stack manipulation to load the value being set.- Parameters:
initialized- The method that was initialized for the instrumented type.fieldDescription- The field to set the value for.instrumentedType- The instrumented type.instrumentedMethod- The instrumented method.- Returns:
- The stack manipulation to apply.
-