Class FieldAccess<T>

  • Type Parameters:
    T - The type of the member variable being accessed

    public class FieldAccess<T>
    extends java.lang.Object
    Encapsulates the logic for accessing member variables of classes.

    The logic in opencsv is always:

    1. Use an accessor method first, if available, and this always has the form "get"/"set" + member name with initial capital.
    2. If this accessor method is available but deals in Optional, wrap or unwrap as necessary. Empty Optionals lead to null return values, and null values lead to empty Optionals.
    3. Use reflection bypassing all access control restrictions.
    These are considered separately for reading and writing.

    Since:
    5.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private AccessorInvoker<java.lang.Object,​T> accessor
      A functional interface to read the field.
      private AssignmentInvoker<java.lang.Object,​T> assignment
      A functional interface to write the field.
      private java.lang.reflect.Field field
      The field being accessed.
    • Constructor Summary

      Constructors 
      Constructor Description
      FieldAccess​(java.lang.reflect.Field field)
      Constructs this instance by determining what mode of access will work for this field.
    • Field Detail

      • field

        private final java.lang.reflect.Field field
        The field being accessed.
      • accessor

        private final AccessorInvoker<java.lang.Object,​T> accessor
        A functional interface to read the field.
      • assignment

        private final AssignmentInvoker<java.lang.Object,​T> assignment
        A functional interface to write the field.
    • Constructor Detail

      • FieldAccess

        public FieldAccess​(java.lang.reflect.Field field)
        Constructs this instance by determining what mode of access will work for this field.
        Parameters:
        field - The field to be accessed.
    • Method Detail

      • determineAccessorMethod

        private AccessorInvoker<java.lang.Object,​T> determineAccessorMethod()
      • determineAssignmentMethod

        private AssignmentInvoker<java.lang.Object,​T> determineAssignmentMethod()
      • getField

        public T getField​(java.lang.Object bean)
                   throws java.lang.IllegalAccessException,
                          java.lang.reflect.InvocationTargetException
        Returns the value of the field in the given bean.
        Parameters:
        bean - The bean from which the value of this field should be returned
        Returns:
        The value of this member variable
        Throws:
        java.lang.IllegalAccessException - If there is a problem accessing the member variable
        java.lang.reflect.InvocationTargetException - If there is a problem accessing the member variable
      • setField

        public void setField​(java.lang.Object bean,
                             T value)
                      throws java.lang.IllegalAccessException,
                             java.lang.reflect.InvocationTargetException
        Sets the value of the field in the given bean.
        Parameters:
        bean - The bean in which the value of the field should be set
        value - The value to be written into the member variable of the bean
        Throws:
        java.lang.IllegalAccessException - If there is a problem accessing the member variable
        java.lang.reflect.InvocationTargetException - If there is a problem accessing the member variable
      • hashCode

        public int hashCode()
        Creates a hash code for this object. This override delegates hash code creation to the field passed in through the constructor and does not includes any of its own state information.
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Determines equality between this object and another. This override delegates equality determination to the field passed in through the constructor and does not includes any of its own state information.
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Returns a string representation of this object. This override delegates the string representation to the field passed in through the constructor and does not includes any of its own state information.
        Overrides:
        toString in class java.lang.Object