当前位置:编程学习 > JAVA >>

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()是在编译期间的 而发射是在程序运行期获得类型信息 --------------------编程问答--------------------
引用 2 楼 guofeng1986 的回复:
个人觉得new A()里面有私有方法,你获取不到 
Class.forName("A")).newInstances()你能获取到所有方法

一样不能,这是最起码的安全防范。 --------------------编程问答--------------------
引用 5 楼 AFer198215 的回复:
引用 2 楼 guofeng1986 的回复:
个人觉得new A()里面有私有方法,你获取不到 
Class.forName("A")).newInstances()你能获取到所有方法
一样不能,这是最起码的安全防范。


http://crabdave.iteye.com/blog/366559上面说能 --------------------编程问答--------------------
引用 6 楼 guofeng1986 的回复:
http://crabdave.iteye.com/blog/366559上面说能

en,真能,他把java的访问控制检查改了。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,