单例,一个屡见不鲜的面试问题,更是java(其实不仅仅是java)的基础问题。但依然有很多人不能写出一个完完整整的例子。
最为常见的错误:
public class singleton{
public static singleton demo;
public static singleton getsingleton(){
if(demo==null) demo = new singleton();
return demo;
}
}
错误有两点:
a:构造方法没有私有化,在其它类中依然可以使用new关键字来创建对象;
b:get方法没有同步,或者说没有加锁,无法确保只有一个对象。
完整的例子:
private singleton(){}
public static synchronized singleton getsingleton(){
其实,能够在里面加入泛型是最好的。。。