class对象存在于哪里?要怎么获取?

TheDisguiser 2020-06-25 16:53:59 java常见问答 9033

对于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对象?

总共有三种获取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工具网了解详情。

推荐阅读:

class对象中有什么方法?该怎么使用?