0
A
回答
3
不,不可能讓一個變量跟蹤另一個變量。通常情況下,這是不可取之一:當一個變量的值被綁定到另一個變量的值,你應該存儲只是其中之一,並且令對方一個計算屬性:
int getC() { return a+1; }
一不太抽象的例子是一對相連的年齡和出生日期。而不是將它們都存儲起來,應該單獨存儲出生日期,並制定一個用於動態計算當前年齡的getter方法。
1
由於您有2個變量以特定方式綁定,因此請考慮使用自定義對象來包裝a
和c
值。然後你可以控制類邏輯中的對象狀態。你可以做這樣的事情:
public class ValuePair {
private final int a;
private final int c;
public ValuePair(int a) {
this.a = a;
this.c = a + 1;
}
public int getA() {
return a;
}
public int getC() {
return c;
}
}
+0
如果你需要對象的可變性,你可以去掉varial上的'final'修飾符,創建唯一的setter,比如'setValues(int a)',它將同時賦值變量'a'和'c' –
1
首先,答案是否定的,你不能直接做在的Java,但你可以重新設計你的int
類,有一個例子:
public class Test {
public static void main(String[] args) throws IOException {
MyInt myInt1 = new MyInt(1);
KeepIncrementOneInt myInt2 = new KeepIncrementOneInt(myInt1);
System.out.println(myInt2.getI());
myInt1.setI(2);
System.out.println(myInt1.getI());
System.out.println(myInt2.getI());
}
}
class MyInt { //your own int class for keep track of the newest value
private int i = 0;
MyInt(int i) {
this.i = i;
}
public int getI() {
return this.i;
}
public void setI(int i) {
this.i = i;
}
}
class KeepIncrementOneInt { //with MyInt Class to get the newest value
private final MyInt myInt;
KeepIncrementOneInt(MyInt myInt) {
this.myInt = myInt;
}
public int getI() {
return this.myInt.getI() + 1; //get the newest value and increment one.
}
}
- 創建自己的
Int
類,因爲我們需要一個引用類型跟蹤的最新價值a
。像apache共享中的MutableInt一樣。 - 使用您自己的
Int
類作爲成員創建一個始終增量的1
類。 - 在
getI
方法中,它總是從reference Int class
得到最新值a
。
相關問題
- 1. 根據其他變量設置變量
- 2. Matlab-如何基於其他變量的值命名新變量?
- 3. 將變量值設置爲
- 4. 將值設置爲變量
- 5. 從對象值中設置變量並將其用作其他變量
- 6. 基於其他變量的Makefile新變量
- 7. 基於其他變量列表更新變量
- 8. 將一個變量設置爲其他兩個變量中較小的一個
- 9. 在Sympy中設置變量相對於其他變量的假設
- 10. 獲取會話變量,並將其設置爲一個變量
- 11. 構建基於其他變量值和靜態文本的PHP變量名稱
- 12. Android:從其他類別設置變量
- 13. Bash設置一個變量來削減其他變量
- 14. 批:從其他變量設置一個變量
- 15. 如何使用兩個其他Range變量設置Range變量?
- 16. 取決於其他變量
- 17. 在變量上選擇值取決於其他變量
- 18. JavaScript:將變量設置爲默認值?
- 19. 將變量的值設置爲EditText
- 20. 將輸入值設置爲Javascript變量
- 21. 將變量設置爲命令的值
- 22. 將值設置爲一個新變量
- 23. C#Jint將值設置爲javascript變量
- 24. 將CSS值設置爲javascript變量
- 25. Sass:將默認值設置爲變量
- 26. CruiseControl.NET將變量設置爲動態值
- 27. 將變量的值設置爲類名
- 28. 將SpinBox的值設置爲變量
- 29. 將選項值設置爲變量
- 30. 將ASP會話變量設置爲Javascript全局變量值
不需要。如果沒有以某種方式封裝行爲,這是不可能的。 –
如果我們使用'c = a + 1?' – orvi
你的問題類似於財產想法。純Java中的屬性被getA()方法使用setA(v) –