JVM为我做了什么
最近看到了java的反射,颇为苦恼,不明白 new A()和(Class.forName("A")).newInstances()(A为一个类)有什么区别,当分别用着两种方法时,java虚拟机的工作机制有什么不同,想不通。当我在控制台运行java命令或者在IDE中运行时java虚拟机为我做了什么?java的类加载机制? --------------------编程问答-------------------- new A() 不用抛异常
Class.forName("A").newInstances() 需要抛异常
new B() --B不存在 编译就过不去
Class.forName("B").newInstances() --B不存在 编译可以过去
简单一句就是:动态代码。 --------------------编程问答-------------------- 个人觉得new A()里面有私有方法,你获取不到
Class.forName("A")).newInstances()你能获取到所有方法 --------------------编程问答-------------------- 可以理解为动态编码 --------------------编程问答-------------------- 额 new a()是在编译期间的 而发射是在程序运行期获得类型信息 --------------------编程问答--------------------
一样不能,这是最起码的安全防范。 --------------------编程问答--------------------
http://crabdave.iteye.com/blog/366559上面说能 --------------------编程问答--------------------
en,真能,他把java的访问控制检查改了。
补充:Java , Java SE