本文介绍了Java泛型 - 如何用后继对象调用通用映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我写了下面的方法:
$ p $ validate(Map< String,IAnimal> map)
我想用
dogMap = new HashMap< String,Dog>;
...
validate(dogMap)
其中Dog是动物,
但它不能编译。
我该如何改变它,所以我可以用后继对象调用它?
Thanks。
解决方案
您可以更改 validate
到:
validate(Map< String,?extends IAnimal> map)
这将允许您传递带有字符串
键的任何地图以及一个扩展或实现的值 IAnimal
。
I wrote the following method
validate(Map<String,IAnimal> map)
And I want to call it with
dogMap = new HashMap<String,Dog>;
...
validate(dogMap)
where Dog is the successor of Animal,
But it does not compile.
How do I change it so I could call it with a successor object?Thanks.
解决方案
You can change the signature of validate
to :
validate(Map<String,? extends IAnimal> map)
This will allow you to pass any map with a String
key and a value that extends or implements IAnimal
.
这篇关于Java泛型 - 如何用后继对象调用通用映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!