ここでシングルトンクラスを練習しようとしていました。シングルトンクラスのメンバ変数の単一コピー
public class StaticClass {
public static StaticClass staticObject = new StaticClass();
private int counter;
private StaticClass() {
}
public static StaticClass getMyObject() {
return staticObject;
}
public Integer showCounter() {
return ++counter;
}
}
public class TestSingleton {
public static void main(String[] args) {
new TestSingleton().testImplementation();
}
public void testImplementation() {
StaticClass obj1 = StaticClass.getMyObject();
Integer obj1Int = obj1.showCounter();
StaticClass obj2 = StaticClass.getMyObject();
Integer obj2Int = obj2.showCounter();
StaticClass obj3 = StaticClass.getMyObject();
Integer obj3Int = obj3.showCounter();
System.out.println(obj1Int+","+obj2Int+","+obj3Int);
}
}
ここでは、カウンタ変数の単一コピーを維持するのは混乱していません。
プログラムを実行した後、私は1,2,3
と異なる値のカウンタを取得しています。
なぜ複数の値がありますか?
showCounter()は、値を返す前にカウンタをインクリメントして値を変更します。あなたが見ている出力は期待されます。 – jhauris