那要看newInstance()是怎么实现的。

解决方案 »

  1.   

    我只是看到多数时候用前一种,有的时候又用后一种,想知道用后一种有什么前提,在这个情况下换前一种是不是也可以(比方说DocumentBuilderFactory class)
      

  2.   

    一般newInstance()用于实例话一个实现了single模式的类.
      

  3.   

    A a = new A();调用class A的构造方法构造一个对象
    A a = A.newInstance();
    应该是A a = (A)A.class.newInstance();
    这个也是调用class A的无参数构造方法构造一个对象,由于这个是Class类的方法,返回的是Object,需要做类型转化,同时newInstance是调用的无参数构造方法,所以class A中必须要有无参数构造方法,而且可以被调用,否则会产生异常。一般来说newInstance方法用于动态加载Class并产生实例的情况下使用,singleton模式和这个方法没有什么关系,而且多次调用netInstance方法产生的对象是不同的。
      

  4.   

    楼主有时间去看一下工厂模型制造对象吧!
            打个最简单的比如:  如果你想控制一个类不能实例化多个对象,你用普通的类是无法实现的!所以就有了single类的模式!下面是我自己写的一个类,你看一下应该可以理解,两种不同的方式的区别!
        public class Demo{private static Demo d=null; public Demo newInstance(){
        if(d==null){
         d=new Demo();
         return d;}
         return d;     
    }
    }
      这只是我个人的理解,如果有什么不对的地方还请多多指教!
      

  5.   

    晕,上面的方法newInstance是静态的,没注意少写了static呵呵,不好意思!
      

  6.   

    一般是在不知道具体型 别时采用newInstance, 比如有三个接口实现了同一个接口,哪么这时我在一个类里在调用 这三个具体的类时我就可以只写一个生成实例的方法就可以了,用哪个接口来转型。可以看看图形的哪个例子