美文网首页Java学习笔记
JAVA学习笔记之 反射

JAVA学习笔记之 反射

作者: 红姑娘 | 来源:发表于2016-12-02 14:22 被阅读6次

    反射:通过一个class文件对象来使用该class文件中的构造方法,成员变量,成员方法。

    • 如何获取Class类文件的对象呢?

    • A:Object类中的getClass()。

    • B:通过数据类型的一个静态的class属性。

    • C:通过Class类的一个静态方法forName()。

    • 为什么开发中使用第三种格式呢?

    •  因为我们可以通过配置文件来提供类的路径或者方法供我们使用。
      

    相关方法:

    1. 方法:public static Class<?> forName(String className)
      意思:通过Class类的一个静态方法获得这个类的字节码对象
      使用:Class class = Class.forName("路径");

    2.方法:public T newInstance()
    意思:通过字节码对象获取Class的类的对象
    使用:Object obj = class.newInstance(); // 其实调用的是类的无参构造方法。

    1. 方法:public Constructor<?>[] getConstructors()
      意思:通过字节码文件对象去获取所有公共的构造方法对象
      使用:Constructor[] cons = class.getConstructors();

    4.方法:public Constructor<?>[] getDeclaredConstructors()
    意思:通过字节码文件对象去获取所有的构造方法对象
    使用:Constructor[] cons = class.getDeclaredConstructors();

    5.方法:public Constructor getConstructor(Class<?>... parameterTypes)
    意思:通过字节码文件对象去获取构造方法
    使用:Constructor cons = class.getConstructor();//单个构造
    Constructor con = c.getConstructor(String.class, int.class,
    String.class);//多个构造

    6.方法:public T newInstance(Object ... initargs)
    意思:通过构造方法对象获取此对象
    使用:Object obj = cons.newInstance();

    7.方法:public void setAccessible(boolean flag)
    意思:取消 Java 语言访问检查
    使用:cons.setAccessible(true);

    8.方法:public Field[] getFields()
    意思:通过反射获取所有公共的成员变量
    使用:Field[] fields = class.getFields();

    9.方法:public Field getField(String name)
    意思:通过反射获取获取单个成员变量
    使用:Field addressField = class.getField("address");

    10.方法:public void set(Object obj,Object value) 针对所有引用类型的成员变量而言
    意思:给obj对象的address成员变量赋值为香港
    使用:addressField.set(obj, "香港");

    11.方法:public Field[] getDeclaredFields()
    意思:通过反射获取所有成员变量
    使用:Field[] fields = class.getDeclaredFields();

    相关文章

      网友评论

        本文标题:JAVA学习笔记之 反射

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