阅读API的Class类得知,Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的

获取Class对象的三种方式(实例采用Person类)

方式1:通过Object类的getObject()方法   

Person p = new Person();
Class c = p.getClass();

方式2: 通过 类名.class 获取到字节码文件对象(任意数据类型都具备一个class静态属性,看上去要比第一种方式简单)。

 

Class c2 = Person.class;

  

方式3: 通过Class类中的方法(将类名作为字符串传递给Class类中的静态方法forName即可)。

   

Class c3 = Class.forName("Person");

  

l 注意:第三种和前两种的区别

前两种你必须明确Person类型.

后面是指定这种类型的字符串就行.这种扩展更强.我不需要知道类名.我只提供字符串,按照配置文件加载就可以了

代码演示:

public class ReflectDemo {
	public static void main(String[] args) throws ClassNotFoundException {
		//通过Object类的getObject()方法   
		Person p = new Person();
		Class c1 = p.getClass();
		System.out.println(c1);

		//类名.class 获取到字节码文件对象
		Class c2 =Person.class;
		System.out.println(c2);

		//通过Class类中的方法forName()
		Class c3 = Class.forName("cn.shiqi.demo1.Person");
		System.out.println(c3);
	}
}

  

class Person{

}

  

   

05-11 17:49