日期:2014-05-20  浏览次数:20701 次

java里边有new来创建一个对象,为什么还要Class.forName?
java里边有new来创建一个对象,为什么还要Class.forName?

------解决方案--------------------
Class.forName()只是返回内存中类对象,也就是类代码的内存,而不是类的一个实例。你需要使用Class.forName( "ClassName ").newInstance()才能创建一个类的实例。

另外Class.forName()可以指定自己的ClassLoader.
------解决方案--------------------
Class.forName() 可以实现动态加载,new 是静态的
------解决方案--------------------
学习
------解决方案--------------------
new 是在程序执行时生成的对象(也就是当程序执行到构造函数时)属静态生成的对象,而Class.forName是程序执行后(也就是在构造函数执行后)根据参数名动态加载类并通过 ".newInstance()动态生成的对象,这两者是有本质的不同的.
------解决方案--------------------
楼上的高手都讲解的很清楚了,这个要看具体情况,就如同到底java好还是c好一样,具体情况具体看待。
------解决方案--------------------
关注
------解决方案--------------------
如果有个需求是根据类的名字来生成某个实例,用new就没有办法了,就可以用Class.forName了。
------解决方案--------------------
Class.forName这个在连接JDBC的时候有到的。
有NEW是在你写好的类,或引用JDK的类时。用到的。想要用类,必须用new 来声明一个对象才可用类中方法或变量。除了你用spring.
------解决方案--------------------
new的对象在编译环境中要通过必须在类路径中有,class.forName在编译时可以不在类路径中,所以class.forName指定了ClassLoader后,一个特殊作用就是在环境中查找某些类,例如jaxp就是通过这种方式确定xml解析器的。这2者的区别还是很大的,慢慢体会吧。初学者不用太深究。
------解决方案--------------------
学习。
------解决方案--------------------
学习哇

------解决方案--------------------
有结合代码讲解就更好了。
------解决方案--------------------
看下那本 < <Java深度历险》我也在看,深入jdk的书