0

あるオブジェクトまたは変数のアドレスをJavaの別のオブジェクトに保存するにはどうすればよいですか? C++ で行うように

int a=&b; // b も int です

Javaで参照によって参照型オブジェクトを任意のメソッドに渡したい場合、デフォルトでは値によって渡されるため、どうすればこれを行うことができますか。

4

3 に答える 3

5

基本的に、できません。Java ではすべてが値渡しであり、それを変更する方法はありません。

最も近い方法は、独自の汎用の変更可能なラッパー タイプを作成するか、長さ 1 の配列を使用することです。ラッパー アプローチを使用すると、何をしているかがより明確になりますが、効率は低下します。必要に応じてラッパー型として使用できますAtomicReference<V>が、その使用は、おそらくそうではないときに同時実行性について懸念していることを意味します。

プリミティブ型のラッパーの場合IntegerLongなどのクラスを使用するか、プリミティブごとに個別の特定のラッパー型を作成できます。(繰り返しますが、後者の方がわずかに効率的です。)

ただし、基本的には、これを必要としないようにコードを設計するようにしてください私はそれが有用なテクニックだとはほとんど思いません。頻繁にやりたいと思っている場合は、別の言語で「考えている」可能性があります...

于 2012-07-03T06:25:30.103 に答える
0

Javaではアドレスを使用できません。そのような能力はありません。すべてのものは価値によって渡されます。変更するオブジェクトを渡す場合、いくつかの方法があります。

a)配列を渡します:

int [] valueArray = new int[1];
valueArray[0] = <your value>;

b)自分で書くべき可変ラッパーを渡します。

c)入力intを渡し、新しい値を返します。

int a = 5;
a = sqr(a);
于 2012-07-03T06:27:38.293 に答える
0

C++ から Java への違いがあります。Java でオブジェクトのアドレスを使用することはお勧めできませんが、論理アドレスを取得する方法はいくつかあります。

http://javapapers.com/core-java/address-of-a-java-object/

これがお役に立てば幸いです。

于 2012-07-03T06:54:17.800 に答える