Class FieldAccessor

  • All Implemented Interfaces:
    InstrumentedType.Prepareable, Implementation
    Direct Known Subclasses:
    FieldAccessor.ForImplicitProperty, FieldAccessor.ForSetter

    @Enhance
    public abstract class FieldAccessor
    extends java.lang.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 Detail

      • 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 Detail

      • 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 Detail

      • ofField

        public static FieldAccessor.OwnerTypeLocatable ofField​(java.lang.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

        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

        public static FieldAccessor.AssignerConfigurable of​(java.lang.reflect.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.