如果我有一些簡單的類如。問題是這個類的實例B可能影響實例A的j
。如何使對象的靜態變量不可變對象B上的狀態變化
public class Tester {
private static int j;
public Tester() {
}
public void setJ(int i){
this.j = i;
}
public int getJ() {
return j;
}
}
在我的現實世界的應用程序,j
必須static
(所以private static
類可以使用它)。但是,當我在上面的示例中製作static
時遇到問題。如果我們創建這個類的兩個單獨的實例,我可以顯示問題:
Tester testOne = new Tester();
Tester testTwo = new Tester();
testOne.setJ(1);
testTwo.setJ(2);
System.out.println(testOne.getJ()); //returns 2
然後在testTwo
設置靜態變量,它覆蓋了我以前設置爲在testOne
靜態變量。如果我要刪除static
然後j
將是不可變的相對於testTwo.setJ(2)
,但我不能有這個。
我該如何解決這個問題?
嗯,是的。這就是'靜態'所做的。 – roippi