对于class对象不知道小伙伴们了解多少呢?你们知道class对象创建后是存放在哪里的吗?下面就来跟小编一起了解一下吧。
什么是class对象?
一个Class类,它被创建后的对象就叫做Class对象。
Class对象表示的是自己手动编写类的类型信息,如创建一个Person 类,那么,JVM就会创建一个Person
来对应相应Class类的Class对象,这个Class对象会保存Person 类相关的所有类型信息。事实上在Java中可以说每个类都是有一个Class对象的,每当我们编写并且编译一个新创建的类就会产生一个对应Class对象且这个Class对象会被保存在同名的.class文件里。在运行时,当需要生成这个类的对象时,JVM就会检查此类是否已经装载内存中。
若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。
那我们为什么需要这样一个Class对象呢?是因为这样,当我们再new一个新对象或者引用静态成员变量时,JVM中的类加载器子系统会把对应Class对象加载到JVM中,再然后根据JVM这个类型信息相关的Class对象创建我们需要实例对象或者提供静态变量的引用值。特别需要注意的是,手动编写的每个class类,无论创建多少个实例对象,在JVM中都只有一个Class对象,即在内存中每个类有且只有一个相对应的Class对象,我们可以通过下图理解一下:
怎么获取class对象?
总共有三种获取Class对象的方式:
1)、Class.forName(“类的全限定名”)
2)、实例对象.getClass()
3)、类名.class (类字面常量)
例:
Person person = new Person(); Class clazz1 = person.getClass(); //1、通过Object类的getClass()方法:(需要先实例化一个对象) Class clazz2 = person.class; //2、通过对象实例方法获取对象:(需要先实例化一个对象) Class clazz3 = Class.forName("com.cn.Person"); //3、类的全路径:(不许呀实例对象)
以上就是关于class对象的全部内容了,你理解了吗?还需要了解更多java常见问题的话,一定请记得关注奇Q工具网了解详情。
推荐阅读: