获取class对象的三种方法,分别在三个不同阶段
1.Source 源代码阶段:Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
2.Class类对象阶段:类名.class(),通过类名的属性class获取
3.运行时阶段,创建对象:对象.getClass()
package reflect;
import domemain.Person;
public class DomeReflect {
/**
* 获取class对象的三种方法,分别在三个不同阶段
1.Source 源代码阶段:Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
2.Class类对象阶段:类名.class,通过类名的属性class获取
3.运行时阶段,创建对象:对象.getClass()
*/
public static void main(String[] args) throws Exception {
Class cls = Class.forName("domemain.Person");//Class.forName("全类名")
//多用于配置文件,将类名定义在配置文件中。读取文件,加载类
System.out.println(cls);
Class cls2 = Person.class;//类名.class 多用于参数传递
System.out.println(cls2);
Person p=new Person();
Class cls3 = p.getClass();//运行时阶段,创建对象:对象.getClass() 多用于对象的字节码的方式
System.out.println(cls3);
//用==比较
System.out.println(cls==cls2);
System.out.println(cls2==cls3);//不管用那个方法,加载的都是一个对象
}
}