的類型和收集的名單我有一個集合,其中每個節點是A類或A類的集合的Java數據結構類型
這也遞歸在一個類的集合中的每個節點可能是A類或A類的集合。
我目前只是使用List,然後檢查Object以查看它是Class A還是Class A的列表,但似乎打敗了使用泛型的目的。我想我需要更多像結構樹一樣的樹。思考?
的類型和收集的名單我有一個集合,其中每個節點是A類或A類的集合的Java數據結構類型
這也遞歸在一個類的集合中的每個節點可能是A類或A類的集合。
我目前只是使用List,然後檢查Object以查看它是Class A還是Class A的列表,但似乎打敗了使用泛型的目的。我想我需要更多像結構樹一樣的樹。思考?
考慮創建一個類(Wrapper<ClassA>
),可以容納任何的ClassA
或List
一個實例。然後讓你的Lists
和內部Lists
是List<Wrapper<ClassA>>
當你實例化一個泛型類型時,你仍然會在集合中存儲同類類型。在現實世界中,你這樣做的方式是建立一個共同的媒介,容器或將A類和B類結合在一起的界面。您可以使用界面來操作這些對象。
或者,您可以將對象默認爲列表。明白了嗎?
你應該定義類節點像下面
public class Node {
List<Node> children = new ArrayList<Node>();
}
如果您可以在混亂的設計模式下實施混合設計模式,那會更好,但這可能是不可能的,因爲對於元素列表可能無法進行操作。 –
是的,在我的情況下,我只需要獲取對象,而不是對它執行操作。仍然所有的建議都符合我的想法,所以這是一個好兆頭! – Kenoyer130
僅供參考,FunctionalJava有一個可能有用的Either類:http://functionaljava.googlecode.com/svn/artifacts/3.0/javadoc/fj/data/Either.html –