八、反射工具类

8. 反射工具类

8.1 使用类

org.voovan.tools.TReflect


8.2 方法说明

8.2.1 获得类所有的Field
  1. public static Field[] getFields(Class<?> clazz)
  • clazz: 类对象。
  • 返回值: Field数组。

8.2.2 查找类特定的Field
  1. public static Field findField(Class<?> clazz, String fieldName)
  • clazz: 类对象。
  • *`fieldName: Field名称
  • 返回值: Field数组。

8.2.3 查找类特定的Field,不区分大小写
  1. public static Field findFieldIgnoreCase(Class<?> clazz, String fieldName)
  • clazz: 类对象。
  • *`fieldName: Field名称
  • 返回值: Field数组。

8.2.4 获取 Field 的范型类型
  1. public static Class[] getFieldGenericType(Field field) throws ClassNotFoundException
  • field: 字段描述对象。
  • 返回值: 返回范型类型数组。

8.2.5 获取类中指定Field的值
  1. static public <T> T getFieldValue(Object obj, String fieldName)
  • obj: 对象。
  • fieldName: field名称。
  • 返回值: Field值。

8.2.6 更新对象中指定的Field的值
  1. public static void setFieldValue(Object obj, String fieldName, Object fieldValue)
  • 注意:对 private 等字段有效。
  • obj: 对象。
  • fieldName: field名称。
  • fieldValue: Field值。

8.2.7 将对象中的field和其值组装成Map
  1. public static Map<String, Object> getFieldValues(Object obj)
  • 注意:静态字段(static修饰的)不包括。
  • obj: 对象。
  • 返回值: 对象中的field和其值组装成的Map。

8.2.8 查找类中的方法
  1. public static Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes)
  • clazz: 类对象。
  • name: 方法名。
  • paramTypes: 方法参数类型。
  • 返回值: Method 对象。

8.2.9 查找类中的方法
  1. public static Method findMethod(Class<?> clazz, String name, int paramCount)
  • clazz: 类对象。
  • name: 方法名。
  • paramCount: 参数数量。
  • 返回值: Method 对象。

8.2.10 获取类的方法集合
  1. public static Method[] getMethods(Class<?> clazz)
  • clazz: 类对象。
  • 返回值: Method对象数组。

8.2.11 获取类的特定方法的集合
  1. public static Method[] getMethods(Class<?> clazz,String name)
  • clazz: 类对象。
  • name: 方法名。
  • 返回值: Method对象数组。

8.2.12 获取方法的参数返回值的范型类型
  1. public static Class[] getMethodParameterGenericType(Method method,int parameterIndex) throws ClassNotFoundException
  • method: method 对象。
  • parameterIndex: 参数索引(大于0)参数索引位置[第一个参数为0,以此类推], (-1) 返回值。
  • 返回值: 返回范型类型数组。

8.2.13 使用对象执行它的一个方法
  1. public static Object invokeMethod(Object obj, Method method, Object... parameters)
  • obj: 对象。
  • method: 方法对象。
  • parameters: 方法参数。
  • 返回值: 方法返回值。

8.2.14 使用对象执行方法
  1. public static Object invokeMethod(Object obj, String name, Object... parameters)
  • obj: 对象。
  • name: 方法名。
  • parameters: 方法参数。
  • 返回值: 方法返回值。

8.2.15 构造新的对象
  1. public static Object newInstance(Class<?> clazz, Object ...parameters)
  • clazz: 对象类。
  • parameters: 方法参数。
  • 返回值: 新构造的对象。

8.2.16 构造新的对象
  1. public static Object newInstance(String className, Object ...parameters)
  • className: 类名称字符串。
  • parameters: 方法参数。
  • 返回值: 新构造的对象。

8.2.17 将对象数组转换成对象类型的数组
  1. public static Class<?>[] getArrayClasses(Object[] objs)
  • objs: 对象数组。
  • 返回值: 对象类型数组。

8.2.18 将Map转换成指定的对象
  1. public static Object getObjectFromMap(Class<?> clazz, Map<String, Object> mapField)
  • clazz: 对象类。
  • mapField: Map对象。
  • 返回值: Map转换成的对象。

8.2.19 将对象转换成 Map
  1. public static Map<String, Object> getMapfromObject(Object obj)
  • obj: 对象。
  • 返回值: Object转换成的Map对象。

8.2.20 判断某个类型是否实现了某个接口
  1. public static boolean isImpByInterface(Class<?> type,Class<?> interfaceClass)
  • type: 对象类型。
    • interfaceClass: 是否实现了这个接口。
  • 返回值: true 实现了这个接口,false 没有实现这个接口。

8.2.21 判断某个类型是否继承于某个类
  1. public static boolean isExtendsByClass(Class<?> type,Class<?> extendsClass)
  • type: 对象类型。
    • interfaceClass: 是否继承于这个类。
  • 返回值: true 实现了这个接口,false 没有实现这个接口。

8.2.22 获取类的继承树上的所有父类
  1. public static Class[] getAllExtendAndInterfaceClass(Class<?> type)
  • clazz: Class 类型对象。
  • 返回值: 所有父类。
8.2.23 获取类的 json 形式的描述
  1. public static String getClazzJSONModel(Class clazz)
  • clazz: Class 类型对象。
  • 返回值: 类的 json 形式的描述。
8.2.24 判读是否是基本类型
  1. 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包下的所有类)
  1. public static boolean isSystemType(Class clazz)
  • 判读是否是基本类型(null, boolean, byte, char, double, float, int, long, short, string)
  • clazz: Class 类型对象。
  • 返回值: true: 是基本类型, false:非基本类型。