Java Generics – 如何使用后继对象调用通用映射

我写了以下方法

validate(Map map) 

我想打电话给它

 dogMap = new HashMap; ... validate(dogMap) 

狗是动物的inheritance者,
但它没有编译。
如何更改它以便我可以使用后继对象调用它? 谢谢。

您可以将validate的签名更改为:

 validate(Map map) 

这将允许您传递任何带有String键的映射以及扩展或实现IAnimal的值。

你有两个选择:

  1. validate的签名更改为YourReturnType validate(Map map) (假设您不想向其添加元素)。
  2. 从要传递的dogMap创建一个新的Mapnew HashMap(dogMap)并传递该对象以validate

您必须使用类型边界声明方法:

 validate(Map map) 

有关Java(有界)通配符的进一步说明,请参见http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html 。