2009-04-19 8 views
11

をハッシュマップ。のget()は、Javaのための機能は、私は以下のハッシュマップを宣言した

私が "hives.get(2)"を呼び出すと、その場所にあるオブジェクトHiveのコピーまたはその参照が返されますか?

私の目標は、その場所のHiveオブジェクトを変更することです。参照が返された場合は、返されたハイブを変更して完了できます。ただし、コピーが返された場合は、そのコピーをハッシュマップに戻す必要があります。

申し訳ありません、簡単な質問です。私は解決策を模索しようとしましたが、どこでも私は値が返されると言っていましたが、値のコピーかそれへの参照かどうかは言いませんでした。

おかげで、 ザイン

答えて

16

それは参照を返します。別段の指定がない限り、これが当てはまると思われるかもしれません。

8

Javaオブジェクトは常に参照によって渡されます。

+1

- Javaは値渡しです。 http://javadude.com/articles/passbyvalue.htm – cherouvim

+6

Javaでオブジェクトポインタを間接参照することはできないので、技術的には値渡しだと思います。しかし、それは、質問をした人にとっては誤解を招く恐れがあります。私の意見では、それは卑劣な議論のように思える。 – hbw

+4

Javaのすべてが値渡しです。 値でオブジェクト参照を渡します。参照によってオブジェクト参照を渡した場合は、参照の値を変更できます。 Therefoer、呼び出されたメソッドは、呼び出し先メソッド内の参照の値を変更する可能性があります。 値渡しだけであるため、Javaはこれをサポートしていません。 –

4

in java Javaのbyte、short、int、long、float、double、およびchar以外のすべてが参照渡しされます。上記の型はjavaの唯一のプリミティブ型であり、valueで渡されます。値によるコピーが必要な場合は、オブジェクト自体にディープコピーを返す独自のメソッドを作成する必要があります。

+0

- Javaは値渡しです。 http://javadude.com/articles/passbyvalue.htm – cherouvim

+2

ok。 javaは厳密には値渡しですが、渡すものはオブジェクトへの参照です。 –

+4

これは重要な違いです。Javaが本当に「参照渡し」だった場合、myHashMap.get(2)= nullと言った場合、キー2でHashMapに渡された元のオブジェクトはnullになります。しかし、それはしません。はい、値が実際に参照値である値渡し全体は混乱しますが、実際にそれを理解することは重要です。 –

関連する問題