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方法产生的对象是不同的。
楼主有时间去看一下工厂模型制造对象吧! 打个最简单的比如: 如果你想控制一个类不能实例化多个对象,你用普通的类是无法实现的!所以就有了single类的模式!下面是我自己写的一个类,你看一下应该可以理解,两种不同的方式的区别! public class Demo{private static Demo d=null; public Demo newInstance(){ if(d==null){ d=new Demo(); return d;} return d; } } 这只是我个人的理解,如果有什么不对的地方还请多多指教!
A a = A.newInstance();
应该是A a = (A)A.class.newInstance();
这个也是调用class A的无参数构造方法构造一个对象,由于这个是Class类的方法,返回的是Object,需要做类型转化,同时newInstance是调用的无参数构造方法,所以class A中必须要有无参数构造方法,而且可以被调用,否则会产生异常。一般来说newInstance方法用于动态加载Class并产生实例的情况下使用,singleton模式和这个方法没有什么关系,而且多次调用netInstance方法产生的对象是不同的。
打个最简单的比如: 如果你想控制一个类不能实例化多个对象,你用普通的类是无法实现的!所以就有了single类的模式!下面是我自己写的一个类,你看一下应该可以理解,两种不同的方式的区别!
public class Demo{private static Demo d=null; public Demo newInstance(){
if(d==null){
d=new Demo();
return d;}
return d;
}
}
这只是我个人的理解,如果有什么不对的地方还请多多指教!