- 八、反射工具类
- 8. 反射工具类
- 8.1 使用类
- 8.2 方法说明
- 8.2.1 获得类所有的Field
- 8.2.2 查找类特定的Field
- 8.2.3 查找类特定的Field,不区分大小写
- 8.2.4 获取 Field 的范型类型
- 8.2.5 获取类中指定Field的值
- 8.2.6 更新对象中指定的Field的值
- 8.2.7 将对象中的field和其值组装成Map
- 8.2.8 查找类中的方法
- 8.2.9 查找类中的方法
- 8.2.10 获取类的方法集合
- 8.2.11 获取类的特定方法的集合
- 8.2.12 获取方法的参数返回值的范型类型
- 8.2.13 使用对象执行它的一个方法
- 8.2.14 使用对象执行方法
- 8.2.15 构造新的对象
- 8.2.16 构造新的对象
- 8.2.17 将对象数组转换成对象类型的数组
- 8.2.18 将Map转换成指定的对象
- 8.2.19 将对象转换成 Map
- 8.2.20 判断某个类型是否实现了某个接口
- 8.2.21 判断某个类型是否继承于某个类
- 8.2.22 获取类的继承树上的所有父类
- 8.2.23 获取类的 json 形式的描述
- 8.2.24 判读是否是基本类型
- 8.2.25 判读是否是 JDK 中定义的类(java包下的所有类)
- 8. 反射工具类
八、反射工具类
8. 反射工具类
8.1 使用类
org.voovan.tools.TReflect
8.2 方法说明
8.2.1 获得类所有的Field
public static Field[] getFields(Class<?> clazz)
clazz
: 类对象。返回值
: Field数组。
8.2.2 查找类特定的Field
public static Field findField(Class<?> clazz, String fieldName)
clazz
: 类对象。- *`fieldName: Field名称
返回值
: Field数组。
8.2.3 查找类特定的Field,不区分大小写
public static Field findFieldIgnoreCase(Class<?> clazz, String fieldName)
clazz
: 类对象。- *`fieldName: Field名称
返回值
: Field数组。
8.2.4 获取 Field 的范型类型
public static Class[] getFieldGenericType(Field field) throws ClassNotFoundException
field
: 字段描述对象。返回值
: 返回范型类型数组。
8.2.5 获取类中指定Field的值
static public <T> T getFieldValue(Object obj, String fieldName)
obj
: 对象。fieldName
: field名称。返回值
: Field值。
8.2.6 更新对象中指定的Field的值
public static void setFieldValue(Object obj, String fieldName, Object fieldValue)
- 注意:对 private 等字段有效。
obj
: 对象。fieldName
: field名称。fieldValue
: Field值。
8.2.7 将对象中的field和其值组装成Map
public static Map<String, Object> getFieldValues(Object obj)
- 注意:静态字段(static修饰的)不包括。
obj
: 对象。返回值
: 对象中的field和其值组装成的Map。
8.2.8 查找类中的方法
public static Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes)
clazz
: 类对象。name
: 方法名。paramTypes
: 方法参数类型。返回值
: Method 对象。
8.2.9 查找类中的方法
public static Method findMethod(Class<?> clazz, String name, int paramCount)
clazz
: 类对象。name
: 方法名。paramCount
: 参数数量。返回值
: Method 对象。
8.2.10 获取类的方法集合
public static Method[] getMethods(Class<?> clazz)
clazz
: 类对象。返回值
: Method对象数组。
8.2.11 获取类的特定方法的集合
public static Method[] getMethods(Class<?> clazz,String name)
clazz
: 类对象。name
: 方法名。返回值
: Method对象数组。
8.2.12 获取方法的参数返回值的范型类型
public static Class[] getMethodParameterGenericType(Method method,int parameterIndex) throws ClassNotFoundException
method
: method 对象。parameterIndex
: 参数索引(大于0)参数索引位置[第一个参数为0,以此类推], (-1) 返回值。返回值
: 返回范型类型数组。
8.2.13 使用对象执行它的一个方法
public static Object invokeMethod(Object obj, Method method, Object... parameters)
obj
: 对象。method
: 方法对象。parameters
: 方法参数。返回值
: 方法返回值。
8.2.14 使用对象执行方法
public static Object invokeMethod(Object obj, String name, Object... parameters)
obj
: 对象。name
: 方法名。parameters
: 方法参数。返回值
: 方法返回值。
8.2.15 构造新的对象
public static Object newInstance(Class<?> clazz, Object ...parameters)
clazz
: 对象类。parameters
: 方法参数。返回值
: 新构造的对象。
8.2.16 构造新的对象
public static Object newInstance(String className, Object ...parameters)
className
: 类名称字符串。parameters
: 方法参数。返回值
: 新构造的对象。
8.2.17 将对象数组转换成对象类型的数组
public static Class<?>[] getArrayClasses(Object[] objs)
objs
: 对象数组。返回值
: 对象类型数组。
8.2.18 将Map转换成指定的对象
public static Object getObjectFromMap(Class<?> clazz, Map<String, Object> mapField)
clazz
: 对象类。mapField
: Map对象。返回值
: Map转换成的对象。
8.2.19 将对象转换成 Map
public static Map<String, Object> getMapfromObject(Object obj)
obj
: 对象。返回值
: Object转换成的Map对象。
8.2.20 判断某个类型是否实现了某个接口
public static boolean isImpByInterface(Class<?> type,Class<?> interfaceClass)
type
: 对象类型。interfaceClass
: 是否实现了这个接口。
返回值
: true 实现了这个接口,false 没有实现这个接口。
8.2.21 判断某个类型是否继承于某个类
public static boolean isExtendsByClass(Class<?> type,Class<?> extendsClass)
type
: 对象类型。interfaceClass
: 是否继承于这个类。
返回值
: true 实现了这个接口,false 没有实现这个接口。
8.2.22 获取类的继承树上的所有父类
public static Class[] getAllExtendAndInterfaceClass(Class<?> type)
clazz
: Class 类型对象。返回值
: 所有父类。
8.2.23 获取类的 json 形式的描述
public static String getClazzJSONModel(Class clazz)
clazz
: Class 类型对象。返回值
: 类的 json 形式的描述。
8.2.24 判读是否是基本类型
public static boolean isBasicType(Class clazz)
- 判读是否是基本类型(null, boolean, byte, char, double, float, int, long, short, string)
clazz
: Class 类型对象。返回值
: true: 是基本类型, false:非基本类型。
8.2.25 判读是否是 JDK 中定义的类(java包下的所有类)
public static boolean isSystemType(Class clazz)
- 判读是否是基本类型(null, boolean, byte, char, double, float, int, long, short, string)
clazz
: Class 类型对象。返回值
: true: 是基本类型, false:非基本类型。