如果我有一个单例课程,例如:
public class MySingleton(){
private static MySingleton istance;
private int element;
private MySingleton(){element = 10;}
public static MySingleton getIstance() {
if(istance == null)
istance = new Mysingleton();
return istance;
}
public void setElement(int i ){
element = i;
}
public int getElement(){
return element;
}
}
我想通过调用更改元素的值
MySingleton.getIstance().setElement(20)
会改变该距离的元素值吗?这是一个例子:
... main () {
MySingleton.getIstance().setElement(20);
System.out.prinln(MySingleton.getIstance().getElement());
// It displays 10, why ?
最佳答案
我建议您使用enum
,因为它更简单且线程安全(但不能使用getter / setter)
public enum MySingleton() {
INSTANCE;
private int element = 10;
public void setElement(int element) { this.element = element; }
public int getElement() { return element; }
}
MySingleton.INSTANCE.setElement(20);
System.out.prinln(MySingleton.INSTANCE.getElement()); // prints 20.
关于java - 不确定Singleton,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28113749/