程序包 dev.utils.common

类 Reflect2Utils

java.lang.Object
dev.utils.common.Reflect2Utils

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

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

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

    • setProperty

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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