2013-02-19 52 views
4

我有樹類ClassA,ClassBClassCClassAClassB extends ClassC。我已合併Multimap<ClassC>並且我有不同類型的對象的Collection。我想從Collection得到這個對象,但如何區分這個對象?我創建了Collection<? super ClassC> coll = multimap.get(key),我希望使用trnasform方法獲取此對象,但我不知道如何區分對象的類型。你能給我建議嗎?我感謝每一個幫助。番石榴:Iterables轉換方法的用法

+0

你是什麼意思的「區分」?你想要達到什麼目的?你的用例是什麼? – Xaerxess 2013-02-19 09:20:16

回答

4

通過它的聲音,你實際上需要向下過濾收集到你想要的類型:使用重載Iterables.filter(Iterable<?> unfiltered, Class<T> type)刪除與我原來的答覆任何類型的問題,從@EtienneNeveu

Collection<? super ClassC> coll = multimap.get(key); 

Iterable<ClassA> classAs = Iterables.filter(coll, ClassA.class); 
Iterable<ClassB> classBs = Iterables.filter(coll, ClassB.class); 

更新。

+0

非常感謝你的回答對我非常有用:) – Martin 2013-02-19 09:34:33

+4

我想你想用超載'Iterables.filter(Iterable 未過濾,類類型)''。這樣,返回的迭代器就具有正確的泛型類型。 Javadoc:http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterables.html – 2013-02-19 17:04:16

+0

超級這好多了,已經更新了我的答案。 – 2013-02-20 08:42:29