我觉得直接看上一篇【JVM】带你解读字节码,可能会有一点懵逼,我后来想了一下,应该先说一下Class对象的
一、Class对象介绍
在JVM中,只会存在两种对象,一种是实例对象,另一种是Class对象,每个实例对象的类型信息都是由Class对象提供的。Class对象中包含了类的访问修饰符、类的关键字、构造方法、属性、方法、实现接口等信息,JVM创建一个实例对象是通过调用Class对象的构造方法进行创建的,可以简单的理解为,Class对象就是实例对象模板
至于在JVM中的位置,实例对象是存放在堆中的,Class对象是存放在方法区中的
Class对象的设计是符合RTTI(Run-Time Type Identification)运行时类型识别的,也就是在运行时能够通过Class对象来识别类的类型信息,正因为满足RTTI,才让java语言有了动态性
二、Class对象的创建
想要获得一个Class对象,首先就是要编写.java文件,然后通过编译器编译成.class文件,然后在通过类加载器来创建并加载到内存中
但是这里还需要注意一下Class对象的加载时机:Class对象并不会在启动JVM时,就全部加载进内存中,而是在执行的线程遇到需要new一个对象,在内存中找不到对应的Class对象时,就会通过类加载器去加载这个Class对象的.class文件来创建Class对象,可以理解为懒加载
类加载子系统的详细讲解后续会再出一篇文章来讲述,先挖个坑
三、Class对象的使用
说到Class对象的使用,第一个想到的就是