【发布时间】:2018-04-29 18:01:36
【问题描述】:
为什么在 Android/Java 中使用单例类,而 看起来 是通过使用具有静态字段和方法的类来提供的?
例如
public class StaticClass {
private static int foo = 0;
public static void setFoo(int f) {
foo = f;
}
public static int getFoo() {
return foo;
}
}
对
public class SingletonClass implements Serializable {
private static volatile SingletonClass sSoleInstance;
private int foo;
//private constructor.
private SingletonClass(){
//Prevent form the reflection api.
if (sSoleInstance != null){
throw new RuntimeException("Use getInstance() method to get the single instance of this class.");
}
foo = 0;
}
public static SingletonClass getInstance() {
if (sSoleInstance == null) { //if there is no instance available... create new one
synchronized (SingletonClass.class) {
if (sSoleInstance == null) sSoleInstance = new SingletonClass();
}
}
return sSoleInstance;
}
//Make singleton from serialize and deserialize operation.
protected SingletonClass readResolve() {
return getInstance();
}
public void setFoo(int foo) {
this.foo = foo;
}
public int getFoo() {
return foo;
}
}
【问题讨论】:
-
请通过This 关于 SO 的讨论。如果你还没有!
-
谢谢,我应该删除这个问题吗?
-
这是一个合理的问题。但是所有的讨论都已经在我提到的线程中进行了。所以只需将其标记为重复。