2012-04-07 3 views
1

私のクラスでは、私はフィールドint countを持っています。私はcount変数の値に応じて、次のように新しい変数を作成したい:int a = new Integer(count)。しかし、カウント変数:count++を更新すると、変数aも更新されます。どのように非参照int変数を作成するのですか?GWT。プリミティブ(参照不可能な)整数変数を作成する

答えて

3

これはJavaでは実行できません。

class MutableInteger { 
    public int value; 
} 

すると、それ以降::あなたの最も近いベットが単一のintで囲むクラスを作成し、代わりにその参照することです

MutableInteger a = new MutableInteger(); 
a.value = 5; 

MutableInteger b = a; 
b.value++; 

a.value++; 

//since a.value is the same primitive as b.value, they are both 7 

しかし:これは一般的に受け入れられて最高の束を破りますJavaの実践あなたは本当の問題が何であれ解決する別の方法を探すかもし​​れません。

+0

1 - 興味があるだけ、あなたはこの休憩ことに言及しているベストプラクティスは何ですか? – jmort253

2

あなたが記述した状況は実際には起こり得ません。

は、このコードを試してみてください。

int count = 15; 
int a = new Integer(count); 
count++; 
Window.alert("a is "+ a + " and count is " + count); 

countが更新され、aはありません。つまり、どこかでエラーが発生していることを意味します。

1

は、以下のことを試してみてください。

int a = count + 0; 
+1

これは助けになりません( – MyTitle

+0

)これは正確にどのように役立つのかを説明して答えが解決することを明確にしてください。 – jmort253

+0

問題は2つの整数で同じ参照を破る方法でした。私は質問が何であるかを正しく理解していないのですか? – hsestupin

0

あなたの問題は、やや見当違いです。理由は次のとおりです。

Javaでは、プリミティブ値がコピーされると、その参照はコピーされません。 あなたのコードを見て、あなたが追加のステップを行っている場所を探してください。

Integerのコンストラクタはこれを使用しています。

this.integer = integer; 
関連する問題