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

解决方案 »

  1.   

    Class.forName()只是返回内存中类对象,也就是类代码的内存,而不是类的一个实例。你需要使用Class.forName("ClassName").newInstance()才能创建一个类的实例。另外Class.forName()可以指定自己的ClassLoader.
      

  2.   

    Class.forName() 可以实现动态加载,new 是静态的
      

  3.   

    new 是在程序执行时生成的对象(也就是当程序执行到构造函数时)属静态生成的对象,而Class.forName是程序执行后(也就是在构造函数执行后)根据参数名动态加载类并通过".newInstance()动态生成的对象,这两者是有本质的不同的.
      

  4.   

    楼上的高手都讲解的很清楚了,这个要看具体情况,就如同到底java好还是c好一样,具体情况具体看待。
      

  5.   

    如果有个需求是根据类的名字来生成某个实例,用new就没有办法了,就可以用Class.forName了。
      

  6.   

    Class.forName这个在连接JDBC的时候有到的。
    有NEW是在你写好的类,或引用JDK的类时。用到的。想要用类,必须用new 来声明一个对象才可用类中方法或变量。除了你用spring.
      

  7.   

    new的对象在编译环境中要通过必须在类路径中有,class.forName在编译时可以不在类路径中,所以class.forName指定了ClassLoader后,一个特殊作用就是在环境中查找某些类,例如jaxp就是通过这种方式确定xml解析器的。这2者的区别还是很大的,慢慢体会吧。初学者不用太深究。
      

  8.   

    看下那本<<Java深度历险》我也在看,深入jdk的书