1.Class loaderClass = Class.forName("MyClass");
Object object = loaderClass.newInstance();
2.MyClass temp=new MyClass();请问哪种方式更快?

解决方案 »

  1.   

    研究过jdk源代码发现Class的newInstance()方法创建实例,实际上是用到了Constructor对象,Class有一个cachedConstructor对象。每次创建对象的时候都是调用cachedConstructor.newInstance()创建实例,你说的每次都得加载我认为只加载一次呀,因为虚拟机为每一个特定的类提供唯一一个Class对象管理这个类。因为cachedConstructor已经缓存了,所以在多线程调用创建对象的时候是cachedConstructor.newInstance()快,还是new快?
      

  2.   

    每个类只会被加载一次,不会有第二次。
    不过Class.newInstance会启动一系列的reflection机制,最终执行创建过程,肯定是要慢一些的。
      

  3.   

    前者使用反射机制去创建一个实例,后者是普通的new一个对象!
    不能说哪个好哪个不好!
    一般在平常的创建实例过程中都采用new的方式,不过在数据库连接时,都是采用反射机制的!
      

  4.   

    2.MyClass temp=new MyClass();
      

  5.   

    当然是new快,编译时就知道类型了,很容易优化
    用反射要运行时才知道是什么类型
      

  6.   

    支持用new方法,用第一方法经常会出现问题的上项目找项目就到erp商务网
    www.chinaident.com
      

  7.   

    作个测试不就知道了啊!class  MyClass{}public class Tester{
           public static void getTime(){
                  System.out.println(System.currentMillsTime());
           }
           public static void main(String[] args){
                  Tester.getTime();
                  Class loaderClass = Class.forName("MyClass");
                  Object object = loaderClass.newInstance();
                  Tester.getTime();
                  MyClass temp=new MyClass();
                  Tester.getTime();
           }
    }
    手头没有jdk,代码也没有调试,就是个这思路吧!!!看看时间差就知道了