Java Generics – 如何使用后继对象调用通用映射
我写了以下方法
validate(Map map)
我想打电话给它
dogMap = new HashMap; ... validate(dogMap)
狗是动物的inheritance者,
但它没有编译。
如何更改它以便我可以使用后继对象调用它? 谢谢。
您可以将validate
的签名更改为:
validate(Map map)
这将允许您传递任何带有String
键的映射以及扩展或实现IAnimal
的值。
你有两个选择:
- 将
validate
的签名更改为YourReturnType validate(Map extends String, ? extends IAnimal> map)
(假设您不想向其添加元素)。 - 从要传递的
dogMap
创建一个新的Map
:new HashMap
并传递该对象以(dogMap) validate
。
您必须使用类型边界声明方法:
validate(Map map)
有关Java(有界)通配符的进一步说明,请参见http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html 。