先看这句话:
对于反射机制来说 .class文件在编译时是不可获取的 所以是在运行打开和检查.class文件
我的疑问:
如:当我使用new 创建一个对象的时候 编译器在编译时打开和检查.class文件了吗
请最好能结合Class对象说说为什么说反射是在运行是获取类型信息 它和其它的机制有什么不同
谢谢
对于反射机制来说 .class文件在编译时是不可获取的 所以是在运行打开和检查.class文件
我的疑问:
如:当我使用new 创建一个对象的时候 编译器在编译时打开和检查.class文件了吗
请最好能结合Class对象说说为什么说反射是在运行是获取类型信息 它和其它的机制有什么不同
谢谢
我印象是这样的
用这个A对象来调用方法 编译器至少要知道A类中是不是有这个方法吧
如果是这样 编译器不就需要加载这个A类还要打开检查吗
怎么说不打开呢 小弟真的不懂 请高手帮忙 谢谢
反射是指定时间装载
反射是程序运行时动态获取对象类型信息和能力的一种机制,跟编译没多大关系。编译时是根据 class 文件中关于类的描述来进行语法检测,检测你源代码中类的使用是否正确,例如用到的方法是否存在,方法参数类型是否匹配等。
public class AA {
public static void main(String[] args) throws Exception {
Class.forName("BB").newInstance();//运行时检查
new BB();//编译时检查
}
}