单例模式中的两个static可以去掉吗?

筱若vivi 发布于 2012/08/03 16:23
阅读 1K+
收藏 0
public class Single{ 
    private static final Single s = new Single(); 
    private Single(){ } 
    public static Single getInstance(){ 
        return s ; 
    } 
} 
上下两个static可以去掉吗,为什么要用static?
加载中
0
Andre.Z
Andre.Z
非静态的变量和方法,需要通过对象来引用,而现在构造函数私有,是不能在外面建立对象的,所以。
Andre.Z
Andre.Z
回复 @筱若vivi : 构造方法不可视,访问不到。
筱若vivi
筱若vivi
啊,是呢,我完全把private Single(){ } 这行忽略掉了,构造方法私有的话 是不是这样Single s = new Single()就会出问题。
0
龙上
龙上
单例没有静态,你怎么new对象以及使用里面的方法啊?
0
weizhong
weizhong
去掉就不算单例了。
0
张师傅
张师傅
单例类,意思是只有一个实例,而static让变量s成为类变量,然后在s中保存这个单例类的实例以达到目的!如果理解这个,楼主就不用纠结了吧!
0
DONFANS
DONFANS

不能去掉。首先。你要保证单例,就必须构造私有。但是构造私有了。

你又需要对外提供一个方法获取该类的实例。而构造都私有了。只能通过类名访问获取

类名访问只能static,而static方法只能访问static成员。所以都要加static

返回顶部
顶部