Effective java第2版-ノート(01)単例(Singleton)の列挙(enum)実現
3571 ワード
直接コード:
注意:javaのenumは徹底したclassであり、他の属性や方法を自由に追加できるので、classとして完全に使用できます.
検証:
11行出力のtrueは,b 1とb 2が同じオブジェクトであることを実証し,この方式は反射呼び出しプライベートコンストラクタが単一例を破壊することを絶対に防止する.
1 public enum Boss {
2
3 INSTANCE;
4
5 private String name;
6
7 public void doSomeThing() {
8 System.out.println(name + " is doing something now...");
9 }
10
11 public String getName() {
12 return name;
13 }
14
15 public void setName(String name) {
16 this.name = name;
17 }
18
19 }
注意:javaのenumは徹底したclassであり、他の属性や方法を自由に追加できるので、classとして完全に使用できます.
検証:
1 @Test
2 public void testSingleton() {
3
4 Boss b1 = Boss.INSTANCE;
5 b1.setName(" ");
6 b1.doSomeThing();// is doing something now...
7
8 Boss b2 = Boss.INSTANCE;
9 b2.doSomeThing();// is doing something now...
10
11 System.out.println(b1.equals(b2));//true
12
13 }
11行出力のtrueは,b 1とb 2が同じオブジェクトであることを実証し,この方式は反射呼び出しプライベートコンストラクタが単一例を破壊することを絶対に防止する.