其中一个应该何时优先于另一个?
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”参数语法,我试图让它“更正确”
答案 0 :(得分:3)
通过使用Object,第一个和第二个选项实际上是相同的。但是,在第2和第3选项之间存在显着差异。考虑那些调用方法的人。如果有一个Map<Integer, String>
,您可以调用前2个,而不是第3个选项。从方法本身开始,只有第3个选项允许方法将数据插入到Map中(不依赖于删除泛型定义和 - 可选地 - 转换arg)。