【发布时间】:2015-10-04 16:45:34
【问题描述】:
我只是在学习如何使用通配符和有界类型参数。我想在传递 HashMap 的方法中使用(我认为)有界通配符。我已经看到了有界类型参数和有界通配符的示例,但我没有找到任何东西可以告诉我如何将 HashMap 传递给 HashMap 可以包含不同值对象的方法。
Map<Integer, Company>
Map<Integer, Employee>
Map<Integer, Location>
这是我上面列出的第一个地图的示例:
public Map<Integer, Company> readXML(Map<Integer, Company> companies) {
我想使用类似以下的方法来启用此方法来处理我上面列出的任何地图。
public Map<Integer, ?> readXML(Map<Integer, ?> values) {
有人可以向我展示一个示例,说明如何在此方法中将通配符用于 Map 值吗?
1) 我是否需要创建一个扩展值对象(Company、Employee、Location)的 Map 类?
2) 或者有没有更好的方法来实现这一点?换句话说,我做错了吗?
感谢您的建议。
【问题讨论】:
-
Company、Employee和Location是什么关系?除了Object之外,它们还有共同的超类型吗? -
要在参数类型之间或参数与返回类型之间进行约束(表示关系),您必须使用类型变量。通配符不允许您创建这种关系,它们只是限制特定的参数或返回类型。
-
@AndyTurner - 唯一常见的超类型是 Object。我只是想想出一种聪明的(非新手)方法来使用相同的 XML 解析器方法来解析我的任何 Map Object 值的值。
标签: java hashmap bounded-wildcard bounded-types