程序包 dev.utils.common

类 Reflect2Utils


  • public final class Reflect2Utils
    extends java.lang.Object
    detail: 反射相关工具类
    作者:
    Ttt
         有两个方法: getMethod, getDeclaredMethod
         

    getDeclaredMethod() 获取的是类自身声明的所有方法, 包含 public、protected 和 private 方法 getMethod() 获取的是类的所有共有方法, 这就包括自身的所有 public 方法, 和从基类继承的、从接口实现的所有 public 方法

    getMethod 只能调用 public 声明的方法, 而 getDeclaredMethod 基本可以调用任何类型声明的方法 反射多用 getDeclaredMethod 尽量少用 getMethod
    • 方法概要

      所有方法 静态方法 具体方法 
      修饰符和类型 方法 说明
      static java.lang.Class[] getArgsClass​(java.lang.Object... args)
      获取参数类型
      static java.lang.reflect.Field getDeclaredFieldParent​(java.lang.Object object, java.lang.String fieldName)
      获取父类中的变量对象 ( 循环向上转型, 获取对象的 DeclaredField)
      static java.lang.reflect.Field getDeclaredFieldParent​(java.lang.Object object, java.lang.String fieldName, int fieldNumber)
      获取父类中的变量对象 ( 循环向上转型, 获取对象的 DeclaredField)
      static <T> T getProperty​(java.lang.Object object, java.lang.reflect.Field field)
      获取某个对象的变量
      static <T> T getProperty​(java.lang.Object object, java.lang.String fieldName)
      获取某个对象的变量 ( 可获取静态变量 )
      static <T> T getPropertyByParent​(java.lang.Object object, java.lang.String fieldName)
      获取父类中的变量对象
      static <T> T getPropertyByParent​(java.lang.Object object, java.lang.String fieldName, int fieldNumber)
      获取父类中的变量对象
      static <T> T getStaticProperty​(java.lang.Class clazz, java.lang.String fieldName)
      获取某个类的静态变量 ( 只能获取静态变量 )
      static <T> T getStaticProperty​(java.lang.Object object, java.lang.String fieldName)
      获取某个类的静态变量 ( 只能获取静态变量 )
      static <T> T getStaticProperty​(java.lang.String className, java.lang.String fieldName)
      获取某个类的静态变量 ( 只能获取静态变量 )
      static <T> T invokeMethod​(java.lang.Object object, java.lang.String methodName)
      执行某个对象方法 ( 可执行静态方法 )
      static <T> T invokeMethod​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] args)
      执行某个对象方法 ( 可执行静态方法 )
      static <T> T invokeMethod​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] args, java.lang.Class[] argsClass)
      执行某个对象方法 ( 可执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.Class clazz, java.lang.String methodName)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.Class clazz, java.lang.String methodName, java.lang.Object[] args)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.Class clazz, java.lang.String methodName, java.lang.Object[] args, java.lang.Class[] argsClass)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.Object object, java.lang.String methodName)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] args)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] args, java.lang.Class[] argsClass)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.String className, java.lang.String methodName)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.String className, java.lang.String methodName, java.lang.Object[] args)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static <T> T invokeStaticMethod​(java.lang.String className, java.lang.String methodName, java.lang.Object[] args, java.lang.Class[] argsClass)
      执行某个类的静态方法 ( 只能执行静态方法 )
      static boolean isInstance​(java.lang.Object object, java.lang.Class clazz)
      是不是某个类的实例
      static <T> T newInstance​(java.lang.Class clazz)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.Class clazz, java.lang.Object[] args)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.Class clazz, java.lang.Object[] args, java.lang.Class[] argsClass)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.Object object)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.Object object, java.lang.Object[] args)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.Object object, java.lang.Object[] args, java.lang.Class[] argsClass)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.String className)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.String className, java.lang.Object[] args)
      新建实例 ( 构造函数创建 )
      static <T> T newInstance​(java.lang.String className, java.lang.Object[] args, java.lang.Class[] argsClass)
      新建实例 ( 构造函数创建 )
      static boolean setProperty​(java.lang.Object object, java.lang.String fieldName, java.lang.Object value)
      设置某个对象变量值 ( 可设置静态变量 )
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 方法详细资料

      • setProperty

        public static boolean setProperty​(java.lang.Object object,
                                          java.lang.String fieldName,
                                          java.lang.Object value)
        设置某个对象变量值 ( 可设置静态变量 )
        参数:
        object - 对象
        fieldName - 属性名
        value - 字段值
        返回:
        true success, false fail
      • getProperty

        public static <T> T getProperty​(java.lang.Object object,
                                        java.lang.String fieldName)
        获取某个对象的变量 ( 可获取静态变量 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        fieldName - 属性名
        返回:
        该变量对象
      • getStaticProperty

        public static <T> T getStaticProperty​(java.lang.Object object,
                                              java.lang.String fieldName)
        获取某个类的静态变量 ( 只能获取静态变量 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        fieldName - 属性名
        返回:
        该变量对象
      • getStaticProperty

        public static <T> T getStaticProperty​(java.lang.Class clazz,
                                              java.lang.String fieldName)
        获取某个类的静态变量 ( 只能获取静态变量 )
        类型参数:
        T - 泛型
        参数:
        clazz - 类
        fieldName - 属性名
        返回:
        该变量对象
      • getStaticProperty

        public static <T> T getStaticProperty​(java.lang.String className,
                                              java.lang.String fieldName)
        获取某个类的静态变量 ( 只能获取静态变量 )
        类型参数:
        T - 泛型
        参数:
        className - 类名
        fieldName - 属性名
        返回:
        该变量对象
      • invokeMethod

        public static <T> T invokeMethod​(java.lang.Object object,
                                         java.lang.String methodName)
        执行某个对象方法 ( 可执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        methodName - 方法名
        返回:
        执行方法返回的结果
      • invokeMethod

        public static <T> T invokeMethod​(java.lang.Object object,
                                         java.lang.String methodName,
                                         java.lang.Object[] args)
        执行某个对象方法 ( 可执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        methodName - 方法名
        args - 参数
        返回:
        执行方法返回的结果
      • invokeMethod

        public static <T> T invokeMethod​(java.lang.Object object,
                                         java.lang.String methodName,
                                         java.lang.Object[] args,
                                         java.lang.Class[] argsClass)
        执行某个对象方法 ( 可执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        methodName - 方法名
        args - 参数
        argsClass - 参数类型
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.Object object,
                                               java.lang.String methodName)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        methodName - 方法名
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.Object object,
                                               java.lang.String methodName,
                                               java.lang.Object[] args)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        methodName - 方法名
        args - 参数数组
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.Object object,
                                               java.lang.String methodName,
                                               java.lang.Object[] args,
                                               java.lang.Class[] argsClass)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        methodName - 方法名
        args - 参数数组
        argsClass - 参数类型
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.Class clazz,
                                               java.lang.String methodName)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        clazz - 类
        methodName - 方法名
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.Class clazz,
                                               java.lang.String methodName,
                                               java.lang.Object[] args)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        clazz - 类
        methodName - 方法名
        args - 参数数组
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.Class clazz,
                                               java.lang.String methodName,
                                               java.lang.Object[] args,
                                               java.lang.Class[] argsClass)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        clazz - 类
        methodName - 方法名
        args - 参数数组
        argsClass - 参数类型
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.String className,
                                               java.lang.String methodName)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        className - 类名
        methodName - 方法名
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.String className,
                                               java.lang.String methodName,
                                               java.lang.Object[] args)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        className - 类名
        methodName - 方法名
        args - 参数数组
        返回:
        执行方法返回的结果
      • invokeStaticMethod

        public static <T> T invokeStaticMethod​(java.lang.String className,
                                               java.lang.String methodName,
                                               java.lang.Object[] args,
                                               java.lang.Class[] argsClass)
        执行某个类的静态方法 ( 只能执行静态方法 )
        类型参数:
        T - 泛型
        参数:
        className - 类名
        methodName - 方法名
        args - 参数数组
        argsClass - 参数类型
        返回:
        执行方法返回的结果
      • newInstance

        public static <T> T newInstance​(java.lang.Object object)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.Object object,
                                        java.lang.Object[] args)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        args - 参数
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.Object object,
                                        java.lang.Object[] args,
                                        java.lang.Class[] argsClass)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        object - 对象
        args - 参数
        argsClass - 参数类型
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.Class clazz)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        clazz - 类
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.Class clazz,
                                        java.lang.Object[] args)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        clazz - 类
        args - 参数
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.Class clazz,
                                        java.lang.Object[] args,
                                        java.lang.Class[] argsClass)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        clazz - 类
        args - 参数
        argsClass - 参数类型
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.String className)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        className - 类名
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.String className,
                                        java.lang.Object[] args)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        className - 类名
        args - 参数
        返回:
        新建的实例
      • newInstance

        public static <T> T newInstance​(java.lang.String className,
                                        java.lang.Object[] args,
                                        java.lang.Class[] argsClass)
        新建实例 ( 构造函数创建 )
        类型参数:
        T - 泛型
        参数:
        className - 类名
        args - 参数
        argsClass - 参数类型
        返回:
        新建的实例
      • isInstance

        public static boolean isInstance​(java.lang.Object object,
                                         java.lang.Class clazz)
        是不是某个类的实例
        参数:
        object - 实例
        clazz - 待判断类
        返回:
        如果 obj 是此类的实例, 则返回 true
      • getArgsClass

        public static java.lang.Class[] getArgsClass​(java.lang.Object... args)
        获取参数类型
        参数:
        args - 参数
        返回:
        参数类型数组
      • getProperty

        public static <T> T getProperty​(java.lang.Object object,
                                        java.lang.reflect.Field field)
        获取某个对象的变量
             例: 获取父类中的变量
             Object object = 对象;
             getObject(getDeclaredFieldParent(object, "父类中变量名"), object);
         
        类型参数:
        T - 泛型
        参数:
        object - 对象
        field - Field
        返回:
        该变量对象
      • getPropertyByParent

        public static <T> T getPropertyByParent​(java.lang.Object object,
                                                java.lang.String fieldName)
        获取父类中的变量对象
        类型参数:
        T - 泛型
        参数:
        object - 子类对象
        fieldName - 父类中的属性名
        返回:
        父类中的变量对象
      • getPropertyByParent

        public static <T> T getPropertyByParent​(java.lang.Object object,
                                                java.lang.String fieldName,
                                                int fieldNumber)
        获取父类中的变量对象
        类型参数:
        T - 泛型
        参数:
        object - 子类对象
        fieldName - 父类中的属性名
        fieldNumber - 字段出现次数, 如果父类还有父类, 并且有相同变量名, 设置负数 一直会跟到最后的变量
        返回:
        父类中的变量对象
      • getDeclaredFieldParent

        public static java.lang.reflect.Field getDeclaredFieldParent​(java.lang.Object object,
                                                                     java.lang.String fieldName)
        获取父类中的变量对象 ( 循环向上转型, 获取对象的 DeclaredField)
        参数:
        object - 对象
        fieldName - 属性名
        返回:
        Field
      • getDeclaredFieldParent

        public static java.lang.reflect.Field getDeclaredFieldParent​(java.lang.Object object,
                                                                     java.lang.String fieldName,
                                                                     int fieldNumber)
        获取父类中的变量对象 ( 循环向上转型, 获取对象的 DeclaredField)
        参数:
        object - 子类对象
        fieldName - 父类中的属性名
        fieldNumber - 字段出现次数, 如果父类还有父类, 并且有相同变量名, 设置负数 一直会跟到最后的变量
        返回:
        Field 父类中的属性对象