1

私のクラスには、 field がありますint countcount次のように、変数の値に応じて新しい変数を作成したいと思いますint a = new Integer(count)。しかし、 count variable: を更新するcount++と、 variableaも更新されます。では、非参照の int 変数を作成するにはどうすればよいでしょうか。

4

4 に答える 4

3

これはJavaではできません。あなたの最も近い賭けは、単一の int で囲んでいるクラスを作成し、代わりにそれを参照することです。

class MutableInteger {
    public int value;
}

じゃあ後で:

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 で一般的に受け入れられている一連のベスト プラクティスを破っています。本当の問題が何であれ、解決する別の方法を探すかもし​​れません。

于 2012-04-07T15:12:52.827 に答える
2

あなたが説明した状況は、実際には起こり得ません。

このコードを試してください:

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

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

于 2012-04-07T15:22:48.257 に答える
1

次のことを試してください。

int a = count + 0;
于 2012-04-07T15:25:13.817 に答える
0

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

Java では、プリミティブ値をコピーしても、それらの参照はコピーされません。コードを見て、追加の手順を実行している場所を探します。

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

this.integer = integer;
于 2012-04-07T23:24:37.567 に答える