我有一個返回的在Java泛型聲明中使用「或」
Map<String, List<Foo>> x();
一個實例,並返回的
Map<String, Collection<Foo>> y();
一個實例現在,如果我要動態地添加一個另一種方法一種方法這個地圖在我的領域,我怎麼能寫出它的泛型爲它的工作?
即:
public class Bar {
private Map<String, ? extends Collection<Foo>> myMap;
public void initializer() {
if(notImportant) myMap = x(); //OK
else myMap = y(); // !OK (Need cast to (Map<String, ? extends Collection<Foo>>)
}
}
現在是否確定讓我投的簽名,即使y()
被聲明爲收藏?
如果不行,我可以以某種方式寫這個(Collection OR List) 我的意思是,List是一個集合,所以它應該以某種方式成爲可能。
private Map<String, Collection<Foo> | List<Foo>>> myMap;
也編譯得很好'javac 1.6.0_17'。正如它應該。 – polygenelubricants 2010-06-02 16:10:37