使用一个枚举:
public enum Foo {
INSTANCE;
}
约书亚·布洛赫(Joshua Bloch)在Google I / O 2008上的“有效的Java重新加载”演讲中解释了这种方法。
实现可序列化单例的正确方法
public enum Elvis { INSTANCE; private final String[] favoriteSongs = { "Hound Dog", "Heartbreak Hotel" }; public void printFavorites() { System.out.println(Arrays.toString(favoriteSongs)); } }
编辑:“高效Java编程”一书中说:
“这种方法在功能上等同于公共领域方法,除了它更简洁,免费提供序列化机制,并且即使面对复杂的序列化或反射攻击,也提供了防止多重实例化的坚定保证。尚未被广泛采用的单元素枚举类型是实现单例的最佳方法。”
如若转载,请注明出处:https://www.javaidea.cn/article/8209.html