Class类的获取和字节码文件(重点)

Class类的获取和字节码文件(重点),第1张

Class类的获取和字节文件(重点)

Class.forName()的作用与使用总结

Class.forName()的作用

问题:我们平时书写在idea中的Java程序是如何运行的呢?
1)首先将 .java 源文件编译为class类文件;
2)编译后的类文件是存在硬盘中的,那么我们运行需要在内存中看到效果,那么类文件是如何被加载到内存中的呢,就是jvm通过类加载器ClassLoader把硬盘中的class文件加载到内存中,这样就可以使用这个类中的成员变量和方法了。而被加载到内存中这个class文件就会变成一个Class类的对象。

反射要依赖于Class类。
由于Class表示类文件的字节码文件对象,类字节码文件就是在描述一个类,描述类的成员变量、成员函数和构造函数。
而反射就是从一个类的字节码文件中拿到成员变量、成员函数和构造函数。要想从一个类中拿东西必须拿到这个类的字节码文件对象,所以反射依赖于Class,因此我们在学习反射之前先了解下Class。
2.1.1 Class类介绍
在Java中使用类来描述所有的事物,而这些描述完的所有程序,在编译完之后统一都会生成各自class文件。
在Java中class文件是所有源代码(.java 文件)程序编译后统一的结果。class文件是一类可以被JVM直接执行的文件。class文件在Java世界中就是存在的一类事物。
Java使用Class类来描述和封装class文件这类事物。class文件也叫作字节码文件。

package ClassObject;

public class Test2 {
    public static void main(String[] args) {
        try {
            //文字列からクラスを取得する
            Class cls  = Class.forName("java.util.ArrayList");
            //クラスをインスタンス化する
            Object obj = cls.newInstance();
            //インスタンスからクラス名を取得する
            System.out.println(obj.getClass().getCanonicalName());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5721709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存