2013-10-12 44 views
1

所以,我想有一種方法來訪問一個數組列表,該列表對象只是在給定的對象中。將對象內的數組列表存儲是一種很好的方法嗎?據我所知,它只會創建一個指向該數組列表的指針,並不會將所有數據從數組列表中複製到該對象。這個推理是否正確?出於其他原因,我是否應該避免這樣做?在作爲該數組列表的一部分的對象中存儲數組列表

+1

否否否否否。不,不要像這樣創建一個循環引用,這是在尋求麻煩。你將不得不修改你的設計,給我們更多的信息,我們可以提供幫助。 –

+0

@JeroenVannevel - 你完全難以置信地錯誤。在Java中創建循環引用沒有什麼不對。 (當然,在特定情況下它可能是不好的程序設計,但對於JVM來說這不是一個嚴重的問題。) –

回答

3

將對象內的數組列表存儲是一個很好的方法來做到這一點?

這取決於你的意思是什麼「好」:它肯定會按照你描述的方式工作,所以你在這方面很好。但是,如果從數組列表中刪除對象,或者必須將對象從一個數組列表「遷移」到另一個數組列表,則事情可能會變得很麻煩。

您需要協調刪除和清除或更改「我的收藏」回參考。如果你不小心,你甚至可能最終會發生內存泄漏,因爲整個數組列表可能會保留更長的引用時間。

所有這些都會造成維修責任,所以如果您能想到一種不這樣做的方式,您應該避免這樣做。

+0

我會指出這個結構非常常見(並且很有用),並且在大多數情況下不會造成問題。如果該陣列本質上是瞬態的,那麼它確實需要考慮,以防止(錯誤地)稱爲「泄漏」。 –

+1

@HotLicks關於內存泄漏的誤解是錯誤的,我並不特別喜歡將Java中引用延遲引用稱爲「內存泄漏」的想法,但在看到它像這樣使用了十多年後,我決定繼續使用流量,並稱之爲「泄漏」。至少在症狀方面有一些相似之處以證明命名的合理性:-) – dasblinkenlight

相關問題