在学反射的时候看到这么一句话:每个类的实例都会记得自己是由哪个 Class 实例所生成的
而我们在生成一个类的对象时 比如,Person person=new Person();
如果从反射的角度来看,那是不是系统先创建一个Person的Class类的实例,然后再调用
这个Class实例的new方法去创建Person的实例?
Class起到一个代理的作用,本质上,之所以能创建Person对象,是因为有Person()构造函数。Class.new只是对它做一个包装。如果编译期间能得到类型,就不需要Class和反射,而直接编译出调用Person构造函数的字节码。
反射的机制是编译类文件的元数据(meta),从而找到匹配的方法,然后动态调用,因此反射是效率极其低下的(往往慢了2个数量级,也就是100倍以上)
反射是运行时创建对象,Person person=new Person();不需要反射,编译器会自动绑定Person的构造函数。