反射

作者: Decade风影 | 来源:发表于2018-01-11 21:32 被阅读0次

    一、 获取Class对象的三种方式:

    1> Class.forName("完整的类名字符串");
        完整类名字符串是指 包名.类名
    2> 类名.class;
    3> 指定类对象.getClass();
    
    最常用的是Class.forName("完整的类名字符串");
    后期大量使用
    

    二、 Java里面反射出来的类

    Constructor, Method, Field 都是Java反射这个包里面的类 java.lang.reflect
    Constructor 是构造方法类
    Method 是成员方法类
    Field 是成员变量类
    

    三、 Constructor常用方法:

    Constructor[] getConstructors(); 获取所有public修饰的构造方法
    Constructor[] getDeclaredConstructors(); 获取当前类里面所有的构造方法,包含用private修饰的构造方法
    Constructor getConstructor(Object... paramterTyeps);
                根据所需参数不同,获取指定的构造方法对象
    Constructor getDeclaredConstructor(Object... paramterTyeps);
                根据所需参数不同,获取指定的构造方法对象,包括私有化的方法
    Object newInstance(Object... initargs); 
                给予确定的参数,通过反射调用构造方法,这里的参数列表是一个不定参数列表
    

    四、 Method常用方法

    Method[] getMethods(); 
            获取当前类里面所有的public修饰的成员方法,这里或显示父类继承而来的public方法
    Method[] getDeclaredMethods(); 
            获取当前类里面的所有方法,包括private修饰的方法,但是会过滤父类继承而来的方法
    Method getMethod(String methodName, Object... args);
            根据方法的名字和对应的参数列表,获取指定方法
    Method getDeclaredMethod(String methodName, Object... args);
            根据方法的名字和对应的参数列表,获取指定方法,可以获取private修饰的方法
    invoke(Object obj, Object... args); 
            执行成员方法的函数,第一个参数是执行该方法的类对象,第二个参数是执行该方法需要的参数列表
    

    五、 Field常用方法

    Field[] getFields();
            获取所有的用public修饰的成员变量
    Field[] getDeclaredFields();
            获取所用成员变量,包括用private 修饰的成员变量
    Field getField(String fieldName);
            根据成员变量的名字获取对应的成员变量
    Field getDeclaredField(String fieldName);
            根据成员变量的名字获取包括private修饰在内的成员变量
    set(Object obj, Object value);
            设置成员变量的数值,第一个参数是调用该成员变量的对象,第二个参数是赋予数值
    

    六、 暴力反射赋予权限的函数

    setAccessible(boolean )
    

    相关文章

      网友评论

          本文标题:反射

          本文链接:https://www.haomeiwen.com/subject/bgotoxtx.html