如何对地图的值类型进行上限

时间:2014-06-19 01:46:10

标签: java generics bounded-wildcard

其中一个应该何时优先于另一个?

public static void doStuffWithIt_A( Map<Integer,  ? extends Object > theThings){ ...} 
public static void doStuffWithIt_B( Map<Integer,  ?                > theThings){ ...} 
public static void doStuffWithIt_C( Map<Integer,  Object           > theThings){ ...} 

我一直在使用java中的变量参数传递接口,灵感来自python的“** kw”参数语法,我试图让它“更正确”

1 个答案:

答案 0 :(得分:3)

通过使用Object,第一个和第二个选项实际上是相同的。但是,在第2和第3选项之间存在显着差异。考虑那些调用方法的人。如果有一个Map<Integer, String>,您可以调用前2个,而不是第3个选项。从方法本身开始,只有第3个选项允许方法将数据插入到Map中(不依赖于删除泛型定义和 - 可选地 - 转换arg)。