我有一个返回的在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