/**
* 获取一个类的.class文件对象的三种方式
* 1,对象获取
* 2,类名获取
* 3,class类的静态方法获取
*/
public class ReflectDemo {
public static void main(String[] args) throws ClassNotFoundException {
//对象获取
Person p = new Person();
Class c = p.getClass();
//类名获取
Class c1 = Person.class;
//3,class类的静态方法获取
Class c2 = Class.forName("demo.Person");
//获取对象中所有公共的构造方法
Constructor[] cons = c2.getConstructors();
//获取指定空参数构造器
Constructor con = c2.getConstructor();
//运行获得的构造方法
Object obj = con.newInstance();
//调用类中的构造方法
Person p1 = (Person)obj;
p1.eat();
//获取有参数的构造方法
Constructor conc = c2.getConstructor(String.class);
Object objc = conc.newInstance("zhangsan");
//3,class类的静态方法获取
Class cnew = Class.forName("demo.Person");
//快捷方法直接创建.class实例
Object objnew = cnew.newInstance();
}
}