题目:设计一个类,只能生成该类的一个实例。
public class SingletonDemo {
private SingletonDemo() {}
private static class SingletonDemoLoader {
private static final SingletonDemo instance = new SingletonDemo();
}
public static SingletonDemo getInstance() {
return SingletonDemoLoader.instance;
}
}
因为内置类的loading是在被第一次调用。
在Java 5之后可以采用枚举法。
public enum SingletonDemo2 {
instance;
}
解决了以下三个问题:
- 自由序列化。
- 保证只有一个实例。
- 线程安全。