• 八、反射工具类
    • 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.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:非基本类型。