2009-04-19 76 views
11

我已經聲明瞭以下的HashMap:的get()爲Java函數包含HashMap

HashMap<Integer, Hive> hives 

凡蜂房是一個對象。

如果我調用「hives.get(2)」,它是否會在該位置返回對象Hive的副本或對該位置的引用?

我的目標是修改該位置的Hive對象。如果它返回引用,我可以修改返回的配置單元並完成。但是,如果一個副本被返回,那麼我將不得不將這個副本放回到hashmap中。

對不起,這個簡單的問題。我試着四處尋找一個解決方案,但在我看來它只是表示該值將被返回,並沒有說它是否是該值的副本或對其的引用。

感謝, Zain公司

回答

16

它返回一個參考。除非另有說明,否則幾乎可以認爲情況如此。

8

您將獲得對它的引用 - Java對象總是通過引用傳遞。

+1

- Java是通過價值。 http://javadude.com/articles/passbyvalue.htm – cherouvim 2009-04-19 05:20:56

+6

好吧,因爲你不能在Java中取消引用對象指針,所以我猜這是*技術上*傳遞值。但說這個問題的人會完全誤導。在我看來,這似乎是一種挑剔的論調。 – hbw 2009-04-19 05:25:11

4

在java中,除byte,short,int,long,float,double和char之外的所有內容都通過引用傳遞。上述類型是java中唯一的基本類型,並且按值傳遞。如果您想要按值複製,您需要在對象中創建自己的方法,以返回其自身的深層副本。