|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ejie.r01f.reflection.ReflectionUtils
Clase auxiliar para metodos de introspeccion
Nested Class Summary | |
class |
ReflectionUtils.Abuelo
|
class |
ReflectionUtils.BaseClass
|
class |
ReflectionUtils.Hijo
|
class |
ReflectionUtils.MyClass
|
class |
ReflectionUtils.Padre
|
Constructor Summary | |
ReflectionUtils()
|
Method Summary | |
static java.lang.String |
composeClassMethodsSignatures(java.lang.Class classDef)
Imprime información de debug sobre los metodos de una clase |
static java.lang.String |
composeMethodSignature(java.lang.reflect.Method m)
Compone la signatura de un metodo: clase.metodo(params..) |
static java.lang.String |
composeMethodSignature(java.lang.String className,
java.lang.String methodName,
java.lang.Class[] paramTypes)
Compone la signatura de un metodo: clase.metodo(params..) |
static java.lang.reflect.Field[] |
getAllFieldsArray(java.lang.Class objClassDef)
Obtiene un array con la DEFINICION de todos los miembros de un objeto, recorriendo toda la jerarquia de herencia PROBLEMA: class.getFields() devuelve solo miembros PUBLICOS class.getDeclaredFields() devuelve miembros publicos y privados declarados en la propia clase (ignora la herencia) |
static java.util.Map |
getAllFieldsMap(java.lang.Class objClassDef)
Obtiene un mapa con la DEFINICION de todos los miembros de un objeto, recorriendo toda la jerarquia de herencia PROBLEMA: class.getFields() devuelve solo miembros PUBLICOS class.getDeclaredFields() devuelve miembros publicos y privados declarados en la propia clase (ignora la herencia) |
static java.lang.reflect.Method[] |
getAllMethodsArray(java.lang.Class objClassDef)
Obtiene un array con la DEFINICION de todos los metodos de un objeto, recorriendo toda la jerarquia de herencia PROBLEMA: class.getMethods() devuelve solo metodos PUBLICOS class.getDeclaredMethods() devuelve metodos publicos y privados declarados en la propia clase (ignora la herencia) |
static java.lang.String |
getClassNameFromCompleteClassName(java.lang.String className)
Obtiene el nombre de la clase a partir del nombre completo incluyendo el paquete |
static java.lang.reflect.Field |
getField(java.lang.Class objClassDef,
java.lang.String fieldName)
Obtiene la DEFINICION de un miembro de un objeto, recorriendo toda la jerarquia de herencia PROBLEMA: class.getFields() devuelve solo miembros PUBLICOS class.getDeclaredFields() devuelve miembros publicos y privados declarados en la propia clase (ignora la herencia) |
static java.lang.String |
getFieldGetterName(java.lang.Class objClassDef,
java.lang.String memberName,
java.lang.Class memberClassDef)
Obtiene el nombre del metodo getter de un miembro en una clase |
static java.lang.String |
getFieldSetterName(java.lang.Class objClassDef,
java.lang.String memberName,
java.lang.Class memberClassDef)
Obtiene el nombre del metodo setter de un miembro en una clase |
static java.lang.Object |
getMemberValue(java.lang.Object obj,
java.lang.String memberName,
boolean useAccessor)
Obtiene el valor de un miembro en un objeto, bien accediendo directamente al miembro o bien utilizando un accessor (get[MemberName]) |
static java.lang.Double |
getMemberValueAsDouble(java.lang.Object obj,
java.lang.String memberName,
boolean useAccessor)
Devuelve el valor de un miembro como un Double |
static java.lang.Float |
getMemberValueAsFloat(java.lang.Object obj,
java.lang.String memberName,
boolean useAccessor)
Devuelve el valor de un miembro como un float |
static java.lang.Long |
getMemberValueAsLong(java.lang.Object obj,
java.lang.String memberName,
boolean useAccessor)
Devuelve el valor de un miembro como un long |
static java.lang.Short |
getMemberValueAsShort(java.lang.Object obj,
java.lang.String memberName,
boolean useAccessor)
Devuelve el valor de un miembro como un short |
static java.lang.String |
getMemberValueAsString(java.lang.Object obj,
java.lang.String memberName,
boolean useAccessor)
Devuelve el valor de un miembro como una cadena |
static java.lang.Object |
getMemberValueUsingPath(java.lang.Object obj,
java.lang.String memberPath,
boolean useAccesors)
Funcion que se encarga de obtener un valor de una jerarquia de objetos El path al miembro se pasa como parametro en la variable memberPath que tiene la siguiente estructura: obj.member.member.member... |
static java.lang.reflect.Method |
getMethod(java.lang.Class objClassDef,
java.lang.String methodName,
java.lang.Class[] paramTypes)
Busca el metodo que se pasa como parameto, recorriendo toda la jerarquia de herencia PROBLEMA: class.getMethods() devuelve solo metodos PUBLICOS class.getDeclaredMethods() devuelve metodos publicos y privados declarados |
static java.lang.Class |
getObjectClassDef(java.lang.String className)
Obtiene la definición de una clase (Class) a partir del nombre completo (incluido paquete) de la clase |
static java.lang.Object |
getObjectInstance(java.lang.Class classDef)
Obtiene una instancia de un objeto utilizando el constructor vacio |
static java.lang.Object |
getObjectInstance(java.lang.Class classDef,
java.lang.Class[] constructorArgsClassDefs,
java.lang.Object[] constructorArgs,
boolean force)
Obtiene una instancia de una clase a partir del nombre completo (incluido paquete) de la clase |
static java.lang.Object |
getObjectInstance(java.lang.String className)
Obtiene una instancia de una clase a partir del nombre completo (incluido paquete) de la clase. |
static java.lang.Object |
getObjectInstance(java.lang.String className,
java.lang.Class[] constructorArgsClassDefs,
java.lang.Object[] constructorArgs,
boolean force)
Obtiene una instancia de una clase a partir del nombre completo (incluido paquete) de la clase |
static java.lang.String |
getPackageFromCompletClassName(java.lang.String className)
Obtiene el nombre del paqueta a partir del nombre completo incluyendo el paquete |
static java.lang.Object |
invokeMethod(java.lang.Object obj,
java.lang.reflect.Method methodDef,
java.lang.Object[] argValues)
Invoca un metodo sobre un objeto |
static java.lang.Object |
invokeMethod(java.lang.Object obj,
java.lang.String methodName,
java.lang.Class[] argsTypes,
java.lang.Object[] argsValues)
Invoca un metodo sobre un objeto |
static java.lang.Object |
invokeStaticMethod(java.lang.Class classDef,
java.lang.String methodName,
java.lang.Class[] argsTypes,
java.lang.Object[] argsValues)
Invoca un metodo ESTATICO sobre un objeto |
static boolean |
isArray(java.lang.Class theClass)
Comprueba si una clase es un array |
static boolean |
isFinalInmutable(java.lang.Class classDef)
Comprueba si un tipo es final inmutable: String, byte, short, integer, long, float, double, character o boolean |
static boolean |
isList(java.lang.Class theClass)
Comprueba si una clase implementa el interfaz list |
static boolean |
isMap(java.lang.Class theClass)
Comprueba si una clase implementa el interfaz map |
static boolean |
isSameClassAs(java.lang.Class theClass,
java.lang.Class theOtherClass)
Comprueba si una clase es igual que la otra |
static boolean |
isSameClassAs(java.lang.Object theObj,
java.lang.Object theOtherObj)
Comprueba si dos objetos son de la misma clase |
static boolean |
isSubClassOf(java.lang.Class theClass,
java.lang.Class theBaseClass)
Recorre la jerarquia de herencia para ver si una clase es subclase de otra que se pasa como parametro |
static boolean |
isSubClassOf(java.lang.Object theObj,
java.lang.Object theBaseObj)
Recorre la jerarquia de herencia para ver si un objeto es subclase de otro que se pasa como parametro |
static void |
main(java.lang.String[] args)
Main para probar el temilla |
static void |
setMemberValue(java.lang.Object obj,
java.lang.String memberName,
java.lang.Class memberClassDef,
java.lang.Object value,
boolean useAccessor)
Establece el valor de un miembro en un objeto bien accediendo directamente a la variable miembro bien utilizando un accessor set[MemberName] |
static void |
setMemberValue(java.lang.Object obj,
java.lang.String memberName,
java.lang.Object value,
boolean useAccessor)
Establece el valor de un miembro en un objeto bien accediendo directamente a la variable miembro bien utilizando un accessor set[MemberName] |
static void |
setMemberValueAsDouble(java.lang.Object obj,
java.lang.String memberName,
java.lang.Double value,
boolean useAccessor)
Establece el valor de un miembro como un double |
static void |
setMemberValueAsFloat(java.lang.Object obj,
java.lang.String memberName,
java.lang.Float value,
boolean useAccessor)
Establece el valor de un miembro como un Float |
static void |
setMemberValueAsInteger(java.lang.Object obj,
java.lang.String memberName,
java.lang.Integer value,
boolean useAccessor)
Establece el valor de un miembro como un entero |
static void |
setMemberValueAsLong(java.lang.Object obj,
java.lang.String memberName,
java.lang.Long value,
boolean useAccessor)
Establece el valor de un miembro como un long |
static void |
setMemberValueAsShort(java.lang.Object obj,
java.lang.String memberName,
java.lang.Short value,
boolean useAccessor)
Establece el valor de un miembro como un short |
static void |
setMemberValueAsString(java.lang.Object obj,
java.lang.String memberName,
java.lang.String value,
boolean useAccessor)
Establece el valor de un miembro como un String |
static void |
setMemberValueUsingPath(java.lang.Object obj,
java.lang.String memberPath,
java.lang.Object memberValue,
boolean useAccesors)
Funcion que se encarga de establecer el valor de un miembro en una jerarquía de objetos El path al miembro se pasa como parametro en la variable memberPath que tiene la siguiente estructura: obj.member.member.member... |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public ReflectionUtils()
Method Detail |
public static boolean isFinalInmutable(java.lang.Class classDef)
classDef
- La definición de la clase
public static java.lang.String getClassNameFromCompleteClassName(java.lang.String className)
className
- El nombre de la clase completo: paquete.nombreClase
public static java.lang.String getPackageFromCompletClassName(java.lang.String className)
className
- nombre de la classe completo: paquete.nombreClase
public static java.lang.Class getObjectClassDef(java.lang.String className) throws java.lang.ClassNotFoundException
className
- El nombre completo de la clase
java.lang.ClassNotFoundException
- si la clase no se encuentrapublic static java.lang.Object getObjectInstance(java.lang.String className, java.lang.Class[] constructorArgsClassDefs, java.lang.Object[] constructorArgs, boolean force) throws ReflectionException
className
- El nombre de la clase (completo)constructorArgsClassDefs
- definiciones de las clases parámetros del constructorconstructorArgs
- Argumentos del constructorforce
- Si hay que forzar la accesibilidad del constructor (pe si es privado)
ReflectionException
- si no se puede obtener una instancia del objetopublic static java.lang.Object getObjectInstance(java.lang.String className) throws ReflectionException
className
- El nombre de la clase (completo)
ReflectionException
- si no se puede obtener la instancia del objetopublic static java.lang.Object getObjectInstance(java.lang.Class classDef, java.lang.Class[] constructorArgsClassDefs, java.lang.Object[] constructorArgs, boolean force) throws ReflectionException
classDef
- la definicion de la claseconstructorArgsClassDefs
- definiciones de las clases parámetros del constructorconstructorArgs
- Argumentos del constructorforce
- Si hay que forzar la accesibilidad del constructor (pe si es privado)
ReflectionException
- si no se puede obtener la instancia del objetopublic static java.lang.Object getObjectInstance(java.lang.Class classDef) throws ReflectionException
classDef
- La definición del objeto
ReflectionException
- si el objeto no se puede crearpublic static boolean isArray(java.lang.Class theClass)
theClass
- La clase que se quiere comprobar si es un array
public static boolean isMap(java.lang.Class theClass)
theClass
- La clase que se quiere comprobar si implementa el
interfaz Map
public static boolean isList(java.lang.Class theClass)
theClass
- La clase que se quiere comprobar si implementa
el interfaz List
public static boolean isSubClassOf(java.lang.Class theClass, java.lang.Class theBaseClass)
theClass
- La clasetheBaseClass
- La clase base
public static boolean isSubClassOf(java.lang.Object theObj, java.lang.Object theBaseObj)
theObj
- un objetotheBaseObj
- el objeto base
public static boolean isSameClassAs(java.lang.Class theClass, java.lang.Class theOtherClass)
theClass
- la clasetheOtherClass
- la otra clase
public static boolean isSameClassAs(java.lang.Object theObj, java.lang.Object theOtherObj)
theObj
- uno de los objetostheOtherObj
- el otro objeto
public static java.lang.reflect.Method[] getAllMethodsArray(java.lang.Class objClassDef)
objClassDef
- La definicion de la clase
Method
con la definicion de los metodospublic static java.lang.reflect.Method getMethod(java.lang.Class objClassDef, java.lang.String methodName, java.lang.Class[] paramTypes) throws java.lang.NoSuchMethodException
objClassDef
- La definicion de la clasemethodName
- El nombre del metodoparamTypes
- Los tipos de los parametros
java.lang.NoSuchMethodException
- si no se encuentra el metodopublic static java.lang.Object invokeMethod(java.lang.Object obj, java.lang.reflect.Method methodDef, java.lang.Object[] argValues) throws java.lang.Throwable, ReflectionException
obj
- El objeto sobre el que se invoca el metodomethodDef
- definicion del metodoargValues
- valores para los argumentos
java.lang.Throwable
- si hay algun error al invocar el metodo
ReflectionException
- si ocurre algun errorpublic static java.lang.Object invokeMethod(java.lang.Object obj, java.lang.String methodName, java.lang.Class[] argsTypes, java.lang.Object[] argsValues) throws java.lang.Throwable, ReflectionException
obj
- El objeto sobre el que se invoca el metodomethodName
- nombre del metodo a invocarargsTypes
- tipos de los argumentos a invocarargsValues
- valores de los argumentos
java.lang.Throwable
- si hay algun error al invocar el metodo
ReflectionException
- si ocurre algun errorpublic static java.lang.Object invokeStaticMethod(java.lang.Class classDef, java.lang.String methodName, java.lang.Class[] argsTypes, java.lang.Object[] argsValues) throws java.lang.Throwable, ReflectionException
classDef
- La definición de la clase que contiene el metodo estaticomethodName
- nombre del metodo a invocarargsTypes
- tipos de los argumentos a invocarargsValues
- valores de los argumentos
java.lang.Throwable
- si hay algun error al invocar el metodo
ReflectionException
- si ocurre algun errorpublic static java.lang.String composeMethodSignature(java.lang.String className, java.lang.String methodName, java.lang.Class[] paramTypes)
className
- El nombre de la clasemethodName
- El nombre del metodosparamTypes
- La definicion de los tipos de los argumentos
public static java.lang.String composeMethodSignature(java.lang.reflect.Method m)
m
- La definicion del metodo
public static java.lang.String composeClassMethodsSignatures(java.lang.Class classDef)
classDef
- La definicion de la clase
public static java.util.Map getAllFieldsMap(java.lang.Class objClassDef) throws ReflectionException
objClassDef
- La definicion de la clase
Field
indexados por su nombre
ReflectionException
- si hay algún error al obtener el mapa de campospublic static java.lang.reflect.Field[] getAllFieldsArray(java.lang.Class objClassDef) throws ReflectionException
objClassDef
- La definicion de la clase
Field
ReflectionException
- si hay algún error al obtener el array de campospublic static java.lang.reflect.Field getField(java.lang.Class objClassDef, java.lang.String fieldName) throws java.lang.NoSuchFieldException
objClassDef
- La definicion de la clasefieldName
- nombre del campo
Field
que define el campo
java.lang.NoSuchFieldException
- si no se encuentra el miembropublic static java.lang.String getFieldSetterName(java.lang.Class objClassDef, java.lang.String memberName, java.lang.Class memberClassDef)
objClassDef
- la clase que contiene el miembromemberName
- nombre del miembromemberClassDef
- la clase del miembro
public static java.lang.String getFieldGetterName(java.lang.Class objClassDef, java.lang.String memberName, java.lang.Class memberClassDef)
objClassDef
- la clase que contiene el miembromemberName
- nombre del miembromemberClassDef
- la clase del miembro
public static void setMemberValue(java.lang.Object obj, java.lang.String memberName, java.lang.Class memberClassDef, java.lang.Object value, boolean useAccessor) throws ReflectionException
obj
- El objetomemberName
- El nombre del miembrovalue
- El valor del miembromemberClassDef
- La clase del miembrouseAccessor
- Si hay que utilizar el metodo set[MemberName]
ReflectionException
- si se produce alguna excepción en el procesopublic static void setMemberValue(java.lang.Object obj, java.lang.String memberName, java.lang.Object value, boolean useAccessor) throws ReflectionException
obj
- El objetomemberName
- El nombre del miembrovalue
- El valor del miembrouseAccessor
- Si hay que utilizar el metodo set[MemberName]
ReflectionException
- si se produce alguna excepción en el procesopublic static void setMemberValueAsString(java.lang.Object obj, java.lang.String memberName, java.lang.String value, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrovalue
- el valoruseAccessor
- true si hay que utilizar un método get/set
ReflectionException
- si se produce alguna excepcion en el procesopublic static void setMemberValueAsInteger(java.lang.Object obj, java.lang.String memberName, java.lang.Integer value, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrovalue
- el valoruseAccessor
- true si hay que utilizar un método get/set
ReflectionException
- si se produce alguna excepcion en el procesopublic static void setMemberValueAsLong(java.lang.Object obj, java.lang.String memberName, java.lang.Long value, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrovalue
- el valoruseAccessor
- true si hay que utilizar un método get/set
ReflectionException
- si se produce alguna excepcion en el procesopublic static void setMemberValueAsDouble(java.lang.Object obj, java.lang.String memberName, java.lang.Double value, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrovalue
- el valoruseAccessor
- true si hay que utilizar un método get/set
ReflectionException
- si se produce alguna excepcion en el procesopublic static void setMemberValueAsShort(java.lang.Object obj, java.lang.String memberName, java.lang.Short value, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrovalue
- el valoruseAccessor
- true si hay que utilizar un método get/set
ReflectionException
- si se produce alguna excepcion en el procesopublic static void setMemberValueAsFloat(java.lang.Object obj, java.lang.String memberName, java.lang.Float value, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrovalue
- el valoruseAccessor
- true si hay que utilizar un método get/set
ReflectionException
- si se produce alguna excepcion en el procesopublic static java.lang.Object getMemberValue(java.lang.Object obj, java.lang.String memberName, boolean useAccessor) throws ReflectionException
obj
- El objetomemberName
- El nombre del miembrouseAccessor
- Si hay que utilizar accessors
ReflectionException
- si se produce alguna excepción en el procesopublic static java.lang.String getMemberValueAsString(java.lang.Object obj, java.lang.String memberName, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrouseAccessor
- true si hay que utilizar método get / set
ReflectionException
- si hay un error en el procesopublic static java.lang.Long getMemberValueAsLong(java.lang.Object obj, java.lang.String memberName, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrouseAccessor
- true si hay que utilizar método get / set
ReflectionException
- si hay un error en el procesopublic static java.lang.Double getMemberValueAsDouble(java.lang.Object obj, java.lang.String memberName, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrouseAccessor
- true si hay que utilizar método get / set
ReflectionException
- si hay un error en el procesopublic static java.lang.Short getMemberValueAsShort(java.lang.Object obj, java.lang.String memberName, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrouseAccessor
- true si hay que utilizar método get / set
ReflectionException
- si hay un error en el procesopublic static java.lang.Float getMemberValueAsFloat(java.lang.Object obj, java.lang.String memberName, boolean useAccessor) throws ReflectionException
obj
- el objetomemberName
- el nombre del miembrouseAccessor
- true si hay que utilizar método get / set
ReflectionException
- si hay un error en el procesopublic static void setMemberValueUsingPath(java.lang.Object obj, java.lang.String memberPath, java.lang.Object memberValue, boolean useAccesors) throws ReflectionException, java.lang.reflect.InvocationTargetException, java.lang.IllegalAccessException, java.lang.NoSuchMethodException, java.lang.NoSuchFieldException
obj
- memberPath
- memberValue
- el valor del miembro final del pathuseAccesors
- si hay que utilizar métodos get/set
ReflectionException
- Si se da alguna excepcion al acceder al miembro
java.lang.reflect.InvocationTargetException
java.lang.IllegalAccessException
java.lang.NoSuchMethodException
java.lang.NoSuchFieldException
- Si el miembro solicitado en el path no existepublic static java.lang.Object getMemberValueUsingPath(java.lang.Object obj, java.lang.String memberPath, boolean useAccesors) throws ReflectionException
obj
- El objeto en el cual se ha de obtener el miembromemberPath
- El path del miembro ej: member.innnerMember.member...useAccesors
- si hay que utilizar métodos de acceso al usuario
ReflectionException
- Si se da alguna excepcion al acceder al miembro;
ArrayIndexOutOfBoundsException Si un miembro del path es un array y el indice solicitado se sale de los límites
IllegalAccessException Si no se puede acceder a un miembro especificado en el path
NoSuchFieldException Si el miembro solicitado en el path no existe
NumberFormatException Si el formato para un índice en un array o lista no es validopublic static void main(java.lang.String[] args)
args
-
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |