Package net.bytebuddy.implementation
Class FieldAccessor
java.lang.Object
net.bytebuddy.implementation.FieldAccessor
- All Implemented Interfaces:
InstrumentedType.Prepareable
,Implementation
- Direct Known Subclasses:
FieldAccessor.ForImplicitProperty
,FieldAccessor.ForSetter
Defines a method to access a given field by following the Java bean conventions for getters and setters:
- Getter: A method named
getFoo()
will be instrumented to read and return the value of a fieldfoo
or another field if one was specified explicitly. If a property is of typeBoolean
orboolean
, the nameisFoo()
is also permitted. - Setter: A method named
setFoo(value)
will be instrumented to write the given argumentvalue
to a fieldfoo
or to another field if one was specified explicitly.
Field accessors always implement a getter if a non-void
value is returned from a method and attempt to define a setter
otherwise. If a field accessor is not explicitly defined as a setter via FieldAccessor.PropertyConfigurable
, an instrumented
method must define exactly one parameter. Using the latter API, an explicit parameter index can be defined and a return
value can be specified explicitly when void
is not returned.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
A field accessor that can be configured to use a given assigner and runtime type use configuration.protected static interface
A field location represents an identified field description which depends on the instrumented type and method.static interface
A field name extractor is responsible for determining a field name to a method that is implemented to access this method.protected static class
A field accessor for an implicit property where a getter or setter property is inferred from the signature.protected static class
A field accessor for a field setter.static interface
A field accessor that can be configured to locate a field in a specific manner.static interface
A field accessor that allows to define the access to be a field write of a given argument.Nested classes/interfaces inherited from interface net.bytebuddy.implementation.Implementation
Implementation.Composable, Implementation.Compound, Implementation.Context, Implementation.Simple, Implementation.SpecialMethodInvocation, Implementation.Target
Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.scaffold.InstrumentedType.Prepareable
InstrumentedType.Prepareable.NoOp
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Assigner
The assigner to use.protected final FieldAccessor.FieldLocation
The field's location.protected final Assigner.Typing
Indicates if dynamic type castings should be attempted for incompatible assignments. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
FieldAccessor
(FieldAccessor.FieldLocation fieldLocation, Assigner assigner, Assigner.Typing typing) Creates a new field accessor. -
Method Summary
Modifier and TypeMethodDescriptionDefines a field accessor where the specified field is accessed.of
(FieldDescription fieldDescription) Defines a field accessor where the specified field is accessed.of
(FieldAccessor.FieldNameExtractor fieldNameExtractor) Defines a custom strategy for determining the field that is accessed by this field accessor.Defines a field accessor where any access is targeted to a field that matches the methods name with the Java specification for bean properties, i.e.Defines a field accessor where any access is targeted to a field namedname
.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.bytebuddy.implementation.Implementation
appender
Methods inherited from interface net.bytebuddy.dynamic.scaffold.InstrumentedType.Prepareable
prepare
-
Field Details
-
fieldLocation
The field's location. -
assigner
The assigner to use. -
typing
Indicates if dynamic type castings should be attempted for incompatible assignments.
-
-
Constructor Details
-
FieldAccessor
protected FieldAccessor(FieldAccessor.FieldLocation fieldLocation, Assigner assigner, Assigner.Typing typing) Creates a new field accessor.- Parameters:
fieldLocation
- The field's location.assigner
- The assigner to use.typing
- Indicates if dynamic type castings should be attempted for incompatible assignments.
-
-
Method Details
-
ofField
Defines a field accessor where any access is targeted to a field namedname
.- Parameters:
name
- The name of the field to be accessed.- Returns:
- A field accessor for a field of a given name.
-
ofBeanProperty
Defines a field accessor where any access is targeted to a field that matches the methods name with the Java specification for bean properties, i.e. a methodgetFoo
orsetFoo(value)
will either read or write a field namedfoo
.- Returns:
- A field accessor that follows the Java naming conventions for bean properties.
-
of
public static FieldAccessor.OwnerTypeLocatable of(FieldAccessor.FieldNameExtractor fieldNameExtractor) Defines a custom strategy for determining the field that is accessed by this field accessor.- Parameters:
fieldNameExtractor
- The field name extractor to use.- Returns:
- A field accessor using the given field name extractor.
-
of
Defines a field accessor where the specified field is accessed. The field must be within the hierarchy of the instrumented type.- Parameters:
field
- The field being accessed.- Returns:
- A field accessor for the given field.
-
of
Defines a field accessor where the specified field is accessed. The field must be within the hierarchy of the instrumented type.- Parameters:
fieldDescription
- The field being accessed.- Returns:
- A field accessor for the given field.
-