[JAVA]モノトーン


今日はモノトーンについて調べてみましょう.
モノトーンとは?オブジェクトを1つだけ作成
つまり、複数のオブジェクトを作成しても、1つのオブジェクトを統一して使用します.
MySingletonTest.java
public class MySingletonTest {

	public static void main(String[] args) {
		MySingleTon a = MySingleTon.getInstance(); 
		MySingleTon a2 = MySingleTon.getInstance(); 
		System.out.println(a==a2);
		System.out.println(System.identityHashCode(a));
		System.out.println(System.identityHashCode(a2));
	}

}
MySingleTon.java
public class MySingleTon {
	private static MySingleTon single;
	private MySingleTon(){
		
	}
	
	
	public static MySingleTon getInstance() {
		if(single == null)
			single = new MySingleTon();
		return single;
	}
}
上からmainがaとa 2を作成していることがわかります.ここではジェネレータを受信せずにgetInstance()を直接呼び出します.ではgetInstance()を見て、singleがnullの場合、Defaultジェネレータが呼び出されます.ただしnullでない場合はsingleを返します.これを説明すると、ジェネレータは最初がnullの場合にのみ呼び出され、その後がnullの場合になるまで呼び出されません.

うん.だから結局住所は同じで、IdentityHashcodeの話によると

同じものが見えます!