Package 

Object ReflectionUtils

    • Method Summary

      Modifier and Type Method Description
      final Array<Class<?>> getClassTypes(Array<Object> args) first of all, int.class != Integer.class.
      final Object newInstance(String className, Array<Object> args, Array<Class<?>> argClasses) 根据类名和构造函数的参数新建一个对象实例,只能通过 public 的构造函数新建实例。
      final Object getStaticField(String className, String fieldName) 获得类的静态属性值,不管是 public 或者 private 的都可以。
      final Boolean setStaticField(String className, String fieldName, Object value) 修改类的静态属性值,不管是 public 或者 private 的都可以。
      final Object getField(Object owner, String fieldName) 获得对象的属性值,不管是 public 或者 private 的都可以, 但是该方法只能获得在该对象的类中所定义的成员变量的值,不能获得其父类的成员变量的值。
      final Object getField(Object owner, String className, String fieldName) 获得对象的属性值(属性是对象的父类中定义的),不管是 public 或者 private 的都可以。
      final Boolean setField(Object owner, String fieldName, Object value) 修改对象的属性值,不管是 public 或者 private 的都可以, 但是该方法只能修改在该对象的类中所定义的成员变量的值,不能修改其父类的成员变量的值。
      final Boolean setField(Object owner, String className, String fieldName, Object value) 修改对象的属性值(属性是对象的父类中定义的),不管是 public 或者 private 的都可以。
      final Object invokeStaticMethod(String className, String methodName, Array<Object> args, Array<Class<?>> argClasses) 调用类的静态方法,不管是 public 或者 private 的都可以。
      final Object invokeMethod(Object owner, String methodName, Array<Object> args, Array<Class<?>> argClasses) 调用对象的方法,不管是 public 或者 private 的都可以。 但是该方法只能调用对象所属类中定义的方法,不能调用其父类中定义的方法。
      final Object invokeMethod(Object owner, String methodName, Object args, Class<?> argClasses, Boolean showLog) 调用对象的方法,不管是 public 或者 private 的都可以。 但是该方法只能调用对象所属类中定义的方法,不能调用其父类中定义的方法。
      final Object invokeMethod(Object owner, String className, String methodName, Array<Object> args, Array<Class<?>> argClasses) 调用对象的方法(方法是在对象所属类的父类中定义的),不管是 public 或者 private 的都可以。 如果这个方法在子类中重写的话,实际上还是调用子类的重写方法
      final Object newArrayInstance(String className, Integer len) 新建一个类型的数组
      final Object getObjectInArray(Object array, Integer index) 获得数组中的一个元素
      final Unit setObjectInArray(Object array, Integer index, Object value) 修改数组中的一个元素的值
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • getClassTypes

         final Array<Class<?>> getClassTypes(Array<Object> args)

        first of all, int.class != Integer.class. but int.class == Integer.TYPE the is similarly to other primitive type, such as float, boolean, double, byte, char, short, long.

        int a = 12; Object[] args = new Object[]{a};

        in last code block, args0.class is Integer.class because JVM cast a to Integer type in Java. in that case, this getClassTypes method will return wrong so if args contains primitive type(like int, boolean) you should not use this method.

        Parameters:
        args - 参数
      • newInstance

         final Object newInstance(String className, Array<Object> args, Array<Class<?>> argClasses)

        根据类名和构造函数的参数新建一个对象实例,只能通过 public 的构造函数新建实例。

        Parameters:
        className - 类名
        args - 构造函数的参数
        argClasses - 构造函数的参数的 class type
      • getStaticField

         final Object getStaticField(String className, String fieldName)

        获得类的静态属性值,不管是 public 或者 private 的都可以。

        Parameters:
        className - 类名
        fieldName - 属性名
      • setStaticField

         final Boolean setStaticField(String className, String fieldName, Object value)

        修改类的静态属性值,不管是 public 或者 private 的都可以。

        Parameters:
        className - 类名
        fieldName - 属性名
        value - 修改后的属性值
      • getField

         final Object getField(Object owner, String fieldName)

        获得对象的属性值,不管是 public 或者 private 的都可以, 但是该方法只能获得在该对象的类中所定义的成员变量的值,不能获得其父类的成员变量的值。

        Parameters:
        owner - 对象
        fieldName - 对象所属类的属性名
      • getField

         final Object getField(Object owner, String className, String fieldName)

        获得对象的属性值(属性是对象的父类中定义的),不管是 public 或者 private 的都可以。

        Parameters:
        owner - 对象
        className - 对象所属类的父类的类名
        fieldName - 对象所属类的父类的属性名
      • setField

         final Boolean setField(Object owner, String fieldName, Object value)

        修改对象的属性值,不管是 public 或者 private 的都可以, 但是该方法只能修改在该对象的类中所定义的成员变量的值,不能修改其父类的成员变量的值。

        Parameters:
        owner - 对象
        fieldName - 对象所属类的属性名
        value - 修改后的属性值
      • setField

         final Boolean setField(Object owner, String className, String fieldName, Object value)

        修改对象的属性值(属性是对象的父类中定义的),不管是 public 或者 private 的都可以。

        Parameters:
        owner - 对象
        className - 对象所属类的父类的类名
        fieldName - 对象所属类的父类的属性名
        value - 修改后的属性值
      • invokeStaticMethod

         final Object invokeStaticMethod(String className, String methodName, Array<Object> args, Array<Class<?>> argClasses)

        调用类的静态方法,不管是 public 或者 private 的都可以。

        Parameters:
        className - 类名
        methodName - 静态方法名
        args - 方法的参数
        argClasses - 方法的参数的 class type
      • invokeMethod

         final Object invokeMethod(Object owner, String methodName, Array<Object> args, Array<Class<?>> argClasses)

        调用对象的方法,不管是 public 或者 private 的都可以。 但是该方法只能调用对象所属类中定义的方法,不能调用其父类中定义的方法。

        Parameters:
        owner - 对象
        methodName - 对象所属类的方法名
        args - 方法的参数
        argClasses - 方法的参数的 class type
      • invokeMethod

         final Object invokeMethod(Object owner, String methodName, Object args, Class<?> argClasses, Boolean showLog)

        调用对象的方法,不管是 public 或者 private 的都可以。 但是该方法只能调用对象所属类中定义的方法,不能调用其父类中定义的方法。

        Parameters:
        owner - 对象
        methodName - 对象所属类的方法名
        args - 方法的参数
        argClasses - 方法的参数的 class type
      • invokeMethod

         final Object invokeMethod(Object owner, String className, String methodName, Array<Object> args, Array<Class<?>> argClasses)

        调用对象的方法(方法是在对象所属类的父类中定义的),不管是 public 或者 private 的都可以。 如果这个方法在子类中重写的话,实际上还是调用子类的重写方法

        Parameters:
        owner - 对象
        className - 对象所属类的父类的类名
        methodName - 对象所属类的父类的方法名
        args - 方法参数
        argClasses - 方法的参数的 class type
      • newArrayInstance

         final Object newArrayInstance(String className, Integer len)

        新建一个类型的数组

        Parameters:
        className - 数组的类型的类名
        len - 数组的大小
      • setObjectInArray

         final Unit setObjectInArray(Object array, Integer index, Object value)

        修改数组中的一个元素的值

        Parameters:
        array - 数组
        index - 元素在数组中的位置
        value - 修改后的元素值