Package net.minidev.asm
Class BeansAccess<T>
- java.lang.Object
-
- net.minidev.asm.BeansAccess<T>
-
- Type Parameters:
T- the type of the bean being accessed
public abstract class BeansAccess<T> extends java.lang.ObjectAllow access reflect field using runtime generated accessor. BeansAccessor is faster than java.lang.reflect.Method.invoke()
-
-
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 voidaddAlias(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 typestatic <P> BeansAccess<P>get(java.lang.Class<P> type, FieldFilter filter)return the BeansAccess corresponding to a typeabstract java.lang.Objectget(T object, int methodIndex)get field value by field indexjava.lang.Objectget(T object, java.lang.String methodName)get field value by field nameAccessor[]getAccessors()get internal accessorintgetIndex(java.lang.String name)Returns the index of the field accessor.java.util.HashMap<java.lang.String,Accessor>getMap()get internal mapprivate static java.util.LinkedList<java.lang.Class<?>>getParents(java.lang.Class<?> type)abstract TnewInstance()create a new targeted objectabstract voidset(T object, int methodIndex, java.lang.Object value)set field value by field indexvoidset(T object, java.lang.String methodName, java.lang.Object value)set field value by field nameprotected voidsetAccessor(Accessor[] accs)set Accessor
-
-
-
Field Detail
-
map
private java.util.HashMap<java.lang.String,Accessor> map
-
accs
private Accessor[] accs
-
cache
private static java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,BeansAccess<?>> cache
cache used to store built BeansAccess
-
-
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- FieldFiltertype- 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 usem- mapping
-
set
public abstract void set(T object, int methodIndex, java.lang.Object value)
set field value by field index- Parameters:
object- object to altermethodIndex- field id to updatevalue- new value
-
get
public abstract java.lang.Object get(T object, int methodIndex)
get field value by field index- Parameters:
object- object to operatemethodIndex- 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 objectmethodName- methodNamevalue- 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 operatemethodName- 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
-
-