关于Class:
1.Class是一个类,描述类的类,比如定义了Person类,Person类是描述人的,那么谁来描述Person了,所以需要Class这么一个类来描述定义的类
2.反射可以理解为对象照镜子后可以得到的信息,某个类的数据成员名,方法和构造器,某个类到底实现了那些借口
3.对于每个类而言,jre都为其保留一个不变的Class类型的对象,一个Class对象包含了特定某个类的有关信息
4.Class对象只能有系统建立对象
1.Class是一个类,描述类的类,比如定义了Person类,Person类是描述人的,那么谁来描述Person了,所以需要Class这么一个类来描述定义的类
2.反射可以理解为对象照镜子后可以得到的信息,某个类的数据成员名,方法和构造器,某个类到底实现了那些借口
3.对于每个类而言,jre都为其保留一个不变的Class类型的对象,一个Class对象包含了特定某个类的有关信息
4.Class对象只能有系统建立对象
5.一个类在jvm中只会有一个Class实例
获取Class 对象的三种方式:
public void testClass() throws ClassNotFoundException{
Class clazz = null;
//1.通过类名得到Class对象
clazz = Person.class;
//2.通过对象调用getClass()方法来获取
//这种一般不常用,比如传入一个Object对象,想知道是什么对象可以使用该方式
Person person = new Person();
clazz = person.getClass();
//3.通过全类名的方式来获取,用的较多
String className = "cn.Person";
clazz = Class.forName(className);
}
调用newInstance()方法即可获取对应类的对象了
public void testNewInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
String str = "cn.pzhu.reflection.Person";
Class clas = Class.forName(str);
//利用newinstance方法创建对象
//实际调用的是无参数的那个构造器
Object obj = clas.newInstance();
System.out.println(obj);
}