変数int a = 0;
とint c;
があるとします。 は冗長何度も何度も変数値を他の変数に基づいて設定する
おかげc = a + 1
を再入力することなく、常にa + 1
のようなものに等しいあるc
ようにそれを作るためにそれは可能です!
変数int a = 0;
とint c;
があるとします。 は冗長何度も何度も変数値を他の変数に基づいて設定する
おかげc = a + 1
を再入力することなく、常にa + 1
のようなものに等しいあるc
ようにそれを作るためにそれは可能です!
いいえ、1つの変数トラックを別の変数にすることはできません。
int getC() { return a+1; }
A:1つの変数の値を別の変数の値に結び付けられているとき、あなたは他の一方を計算プロパティを片方だけを格納し、行う必要があります。通常、これはどちらかの望ましくありませんあまり抽象的な例は、年齢と生年月日の接続されたペアです。両方を保存するのではなく、生年月日だけを保存し、現在の年齢を動的に計算するゲッターメソッドを作成する必要があります。
2つの変数が特定の方法で結ばれているため、カスタムオブジェクトを使用してa
とc
の値をラップすることを検討してください。次に、クラスロジック内でオブジェクトの状態を制御できます。答えはノーである、あなたはのJavaで直接それを行うことはできませんが、あなたはint
クラスを再設計することができ、例があり、まず
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;
}
}
オブジェクトに変更可能性が必要な場合は、varialbesの 'final'修飾子を取り除いて、' setValues(int a) 'のような唯一の設定子を作成して、両方の変数に' a'と 'c'を割り当てます –
:
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.
}
}
あなたはこのような何かを行うことができます
a
を追跡するために参照型を必要とするので、あなた自身のInt
クラスを作成します。 ApacheのコモンズではMutableIntのようになります。Int
クラスを使用して常に増分1
クラスを作成します。getI
メソッドでは、常にreference Int class
から最新の値a
を取得します。
いいえ何とか動作をカプセル化しないと、これはできません。 –
'c = a + 1? 'を使用した場合 – orvi
あなたの質問はプロパティのアイデアと同じです。純粋なJavaのプロパティは、メソッドgetA()によって使用されます。setA(v) –