Class FieldAccessor

java.lang.Object
net.bytebuddy.implementation.FieldAccessor
All Implemented Interfaces:
InstrumentedType.Prepareable, Implementation
Direct Known Subclasses:
FieldAccessor.ForImplicitProperty, FieldAccessor.ForSetter

@Enhance public abstract class FieldAccessor extends Object implements Implementation

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 field foo or another field if one was specified explicitly. If a property is of type Boolean or boolean, the name isFoo() is also permitted.
  • Setter: A method named setFoo(value) will be instrumented to write the given argument value to a field foo 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.

  • Field Details

    • fieldLocation

      protected final FieldAccessor.FieldLocation fieldLocation
      The field's location.
    • assigner

      protected final Assigner assigner
      The assigner to use.
    • typing

      protected final Assigner.Typing 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

      public static FieldAccessor.OwnerTypeLocatable ofField(String name)
      Defines a field accessor where any access is targeted to a field named name.
      Parameters:
      name - The name of the field to be accessed.
      Returns:
      A field accessor for a field of a given name.
    • ofBeanProperty

      public static FieldAccessor.OwnerTypeLocatable 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 method getFoo or setFoo(value) will either read or write a field named foo.
      Returns:
      A field accessor that follows the Java naming conventions for bean properties.
    • of

      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

      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 extractors to use in their application order.
      Returns:
      A field accessor using the given field name extractor.
    • of

      public static FieldAccessor.OwnerTypeLocatable of(List<? extends FieldAccessor.FieldNameExtractor> fieldNameExtractors)
      Defines a custom strategy for determining the field that is accessed by this field accessor.
      Parameters:
      fieldNameExtractors - The field name extractors to use in their application order.
      Returns:
      A field accessor using the given field name extractor.
    • of

      public static FieldAccessor.AssignerConfigurable of(Field field)
      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

      public static FieldAccessor.AssignerConfigurable of(FieldDescription fieldDescription)
      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.