Java反射机制剖析

    xiaoxiao2025-04-08  30

    如果要进行深究,那首先必须要清楚java类的执行历程: 1.编译:把源程序编译成.class文件 2.加载:JVM装载.class,也就是类装载器装载类字节码 3.最后进行连接 附执行图一张

    什么是Java反射机制 Java的反射机制是在程序运行时,能够完全知道任何一个类,及其它的属性和方法,并且能够任意调用一个对象的属性和方法。这种运行时的动态获取就是Java的反射机制。其实这也是Java是动态语言的一个象征。总结说:反射就是把java类中的各种成分映射成一个个的Java对象,并且可以进行操作。

    java反射的原理 Java的反射就是利用上面执行历程中加载到jvm中的.class文件来进行操作的。.class文件中包含java类的所有信息,当你不知道某个类具体信息时,可以使用反射得到class,获取类对象,然后进行各种操作

    java反射获取.class的方式 1.对象调用 getClass() 方法来获取,通常应用在不知道具体是什么类的情况下 2.类名.class 的方式得到,比较常用,更加可靠 3.通过 Class 对象的 forName() 静态方法来获取

    Class具有的部分方法如下:

    getName():获得类的完整名字。

    getFields():获得类的public类型的属性。

    getDeclaredFields():获得类的所有属性。包括private 声明的和继承类

    getMethods():获得类的public类型的方法。

    getDeclaredMethods():获得类的所有方法。包括private 声明的和继承类

    getMethod(String name, Class[] parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes 参数指定方法的参数类型。

    getConstructors():获得类的public类型的构造方法。

    getConstructor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes 参数指定构造方法的参数类型。

    newInstance():通过类的不带参数的构造方法创建这个类的一个对象。

    1、Class clazz1 = Class.forName(“全限定类名”);  //通过Class类中的静态方法forName,直接获取到一个类的字节码文件对象,此时该类还是源文件阶段,并没有变为字节码文件。

    2、Class clazz2 = Person.class;    //当类被加载成.class文件时,此时Person类变成了.class,在获取该字节码文件对象,也就是获取自己, 该类处于字节码阶段。

    3、Class clazz3 = p.getClass();    //通过类的实例获取该类的字节码文件对象,该类处于创建对象阶段

    最新回复(0)