单子模式,请问当SingletonPattern.getInstance()时,是否会默认先调用一下构造器private SingletonPattern()?public class SingletonPattern {
private double r;
private static SingletonPattern sp;
private SingletonPattern(){
r = java.lang.Math.random();
}
public static SingletonPattern getInstance(){
if(sp == null){
sp = new SingletonPattern();
}
return sp;
}
public double getR(){
return r;
}
public static void main(String[] args) {
SingletonPattern sp1 = SingletonPattern.getInstance();
SingletonPattern sp2 = SingletonPattern.getInstance();
System.out.println(sp1.getR());
System.out.println(sp2.getR());
}
}
private double r;
private static SingletonPattern sp;
private SingletonPattern(){
r = java.lang.Math.random();
}
public static SingletonPattern getInstance(){
if(sp == null){
sp = new SingletonPattern();
}
return sp;
}
public double getR(){
return r;
}
public static void main(String[] args) {
SingletonPattern sp1 = SingletonPattern.getInstance();
SingletonPattern sp2 = SingletonPattern.getInstance();
System.out.println(sp1.getR());
System.out.println(sp2.getR());
}
}
不会
那要private SingletonPattern(){
r = java.lang.Math.random();
}
还有什么用吗?直接定义一次r = java.lang.Math.random();不得了,为何还要把它放在构造器中啊?
不放在constructor里当然也是可以的
但是你怎么都得有个private的constructor。否则就不能保证sintleton了