本文介绍了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泛型 - 如何用后继对象调用通用映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-21 23:01