2012-11-23 145 views
2

Java中的繼承。是否可以這樣做:如何將子值列表中的值設置爲父列表

List<ParentEntity> loc = Locations, 

其中LocationsList<ChildEntity>

+0

http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-javas-generics-implicit – assylias

+1

爲什麼會有人想要這樣做? –

回答

4

正如@Rohit Jain所說,他的回答是有限的。

你可以有一個這樣的解決方法:

List<ParentEntity> loc = new ArrayList<ParentEntity>() 
loc.addAll(locations); 

這個時候,限制是你失去了最初的類型List實現的。而且,更重要的是,對loc的任何修改都不會在位置上看到。

+0

謝謝!這種方法非常完美! – Sergey

+0

不客氣。不要忘記upvote羅希特耆那教的答案呢=) – Jerome

+0

當然,我已經投票羅希特耆那教的答案已經:) – Sergey

5

不,你不能做到這一點。泛型中不允許使用多態性。

但是你可以這樣做: -

List<? extends ParentEntity> loc = new ArrayList<ChildEntity>(); 

哦,是的,你就不能說轉讓後,任何新的項目添加到列表中,除了null。這是你必須忍受的限制。

因此,您可以先創建您的ArrayList<ChildEntity>,填充它,然後將其分配給the LHS

+1

他不能在'清單'中添加其他任何內容 – Jerome

+0

對不起,我不得不重新分配給傑羅姆的回答標記。他的解決方案真的幫了我。我只是測試它。無論如何非常感謝你! – Sergey

+0

@Sergey ..啊!共同。絕對沒錯。你永遠不必爲改變你接受的答案而感到難過。接受最合適的答案,沒有第二個想法。 :) –

相關問題