我必須使用現有的應用程序,並且存在一個列表,其中存儲所有呈現的對象,以便稍後在gui更改時將其刪除。Java如何將對象存儲在列表中?
這是List:
private List<Component> registeredComponents = new ArrayList<Component>();
現在我想知道如果只的Java的對象(ZK組件),或者如果它存儲的對象的副本存儲引用。問題是如果我應該刪除這個。
我必須使用現有的應用程序,並且存在一個列表,其中存儲所有呈現的對象,以便稍後在gui更改時將其刪除。Java如何將對象存儲在列表中?
這是List:
private List<Component> registeredComponents = new ArrayList<Component>();
現在我想知道如果只的Java的對象(ZK組件),或者如果它存儲的對象的副本存儲引用。問題是如果我應該刪除這個。
該列表將包含僅供參考。這適用於所有類型的集合,而不僅僅是ArrayLists。
在Java中實際上有沒有辦法來「掌握」對象本身。當你創建一個新的對象時,你所得到的就是對它的引用(並且沒有辦法通過使用例如在C++中的*
運算符來「解除引用」它)。
列表存儲對對象的引用,而不是副本。對象實例與碰巧又有其他引用的其他人共享。
至於想要刪除這個,如果你有其他的方法可以在以後從GUI中刪除對象(也許你可以查詢父組件或其他東西),那麼List可能是多餘的。但即使是這樣,這裏可能沒有太多的開銷,也不會讓你的程序變得複雜。
謝謝你的回答。 – mw88 2011-06-16 11:20:20
也許是脫離主題但知道何時使用集合(列表,集合等):您可能想要在列表中使用像contains(),add()這樣的方法,但這些方法只有在object(你的Component類)覆蓋了equals()和hashcode()。 (大多數IDE都有爲您生成這些功能的功能)。如果你不這樣做,那麼它會比較對象引用而不是它的內容... – dm76 2011-06-16 09:58:09