获取Class对象的三种方式
Java 提供了三种方式获取 Class 对象:
- 如果已知一个类的名称或该类的一个实例对象:比如我们有一个类Person,张三是Person类的一个对象:
// 方式1 类名.class
Class cls = Person.class
// 方式2 对象.getClass()
Class cls = 张三.getClass()
12345
- 通常情况下, 我们是不知道一个类的信息的.此时我们可以通过遍历包下面的类提供一个类的路径来获取Class对象
// 方式3 Class.forName("类的路径")
Class cls = Class.forName("cn.woniu.Person");
12
区别
(1)类名.class:JVM将使用类装载器,将类装入内存(前提是:类还没有装入内存),不做类的初始化工作,返回Class的对象。
(2)Class.forName(“类名字符串”):装入类,并做类的静态初始化,返回Class的对象。
(3)实例对象.getClass():对类进行静态初始化、非静态初始化;返回引用运行时真正所指的对象(子对象的引用会赋给父对象的引用变量中)所属的类的Class的对象。