Class BeansAccess<T>

  • Type Parameters:
    T - the type of the bean being accessed

    public abstract class BeansAccess<T>
    extends java.lang.Object
    Allow access reflect field using runtime generated accessor. BeansAccessor is faster than java.lang.reflect.Method.invoke()
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Accessor[] accs  
      private static java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,​BeansAccess<?>> cache
      cache used to store built BeansAccess
      private java.util.HashMap<java.lang.String,​Accessor> map  
    • Constructor Summary

      Constructors 
      Constructor Description
      BeansAccess()
      default constuctor
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      private static void addAlias​(BeansAccess<?> access, java.util.HashMap<java.lang.String,​java.lang.String> m)  
      static <P> BeansAccess<P> get​(java.lang.Class<P> type)
      return the BeansAccess corresponding to a type
      static <P> BeansAccess<P> get​(java.lang.Class<P> type, FieldFilter filter)
      return the BeansAccess corresponding to a type
      abstract java.lang.Object get​(T object, int methodIndex)
      get field value by field index
      java.lang.Object get​(T object, java.lang.String methodName)
      get field value by field name
      Accessor[] getAccessors()
      get internal accessor
      int getIndex​(java.lang.String name)
      Returns the index of the field accessor.
      java.util.HashMap<java.lang.String,​Accessor> getMap()
      get internal map
      private static java.util.LinkedList<java.lang.Class<?>> getParents​(java.lang.Class<?> type)  
      abstract T newInstance()
      create a new targeted object
      abstract void set​(T object, int methodIndex, java.lang.Object value)
      set field value by field index
      void set​(T object, java.lang.String methodName, java.lang.Object value)
      set field value by field name
      protected void setAccessor​(Accessor[] accs)
      set Accessor
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • map

        private java.util.HashMap<java.lang.String,​Accessor> map
      • cache

        private static java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,​BeansAccess<?>> cache
        cache used to store built BeansAccess
    • Constructor Detail

      • BeansAccess

        public BeansAccess()
        default constuctor
    • Method Detail

      • setAccessor

        protected void setAccessor​(Accessor[] accs)
        set Accessor
        Parameters:
        accs - Accessor list
      • getMap

        public java.util.HashMap<java.lang.String,​Accessor> getMap()
        get internal map
        Returns:
        a map
      • getAccessors

        public Accessor[] getAccessors()
        get internal accessor
        Returns:
        Accessor list
      • get

        public static <P> BeansAccess<P> get​(java.lang.Class<P> type)
        return the BeansAccess corresponding to a type
        Type Parameters:
        P - working type
        Parameters:
        type - to be access
        Returns:
        the BeansAccess
      • get

        public static <P> BeansAccess<P> get​(java.lang.Class<P> type,
                                             FieldFilter filter)
        return the BeansAccess corresponding to a type
        Type Parameters:
        P - working type
        Parameters:
        filter - FieldFilter
        type - to be access
        Returns:
        the BeansAccess
      • getParents

        private static java.util.LinkedList<java.lang.Class<?>> getParents​(java.lang.Class<?> type)
        Parameters:
        type - current type
        Returns:
        parents hierarchy
      • addAlias

        private static void addAlias​(BeansAccess<?> access,
                                     java.util.HashMap<java.lang.String,​java.lang.String> m)
        Parameters:
        access - accessor to use
        m - mapping
      • set

        public abstract void set​(T object,
                                 int methodIndex,
                                 java.lang.Object value)
        set field value by field index
        Parameters:
        object - object to alter
        methodIndex - field id to update
        value - new value
      • get

        public abstract java.lang.Object get​(T object,
                                             int methodIndex)
        get field value by field index
        Parameters:
        object - object to operate
        methodIndex - field number to operate
        Returns:
        value of the field
      • newInstance

        public abstract T newInstance()
        create a new targeted object
        Returns:
        new instance
      • set

        public void set​(T object,
                        java.lang.String methodName,
                        java.lang.Object value)
        set field value by field name
        Parameters:
        object - target object
        methodName - methodName
        value - new field value
      • get

        public java.lang.Object get​(T object,
                                    java.lang.String methodName)
        get field value by field name
        Parameters:
        object - object to operate
        methodName - getter to call
        Returns:
        field value returned by the getter
      • getIndex

        public int getIndex​(java.lang.String name)
        Returns the index of the field accessor.
        Parameters:
        name - field name
        Returns:
        id of the field