【发布时间】:2011-05-14 13:26:51
【问题描述】:
我已经声明了以下方法:
private void mockInvokeDBHandler(Map<String, Object>... rows) {
List<Map<String, Object>> allRows = Arrays.asList(rows));
// rest of method omitted
}
它由客户端使用类似的东西调用
Map<String, Object> row1 = new HashMap<String, Object>();
Map<String, Object> row2 = new HashMap<String, Object>();
mockInvokeDBHandler(row1, row2);
但是,上面显示的最后一行会产生警告
类型安全:为可变参数创建 Map 的通用数组
我不完全理解这一点,但我想这是因为 varargs 参数被转换为数组,并且拥有一个类型为泛型类的数组是个坏主意(因为泛型是不变的,而数组不是) .
我可以通过将方法重新定义为来解决这个问题
private void mockInvokeDBHandler(List<Map<String, Object>> rows) {
}
但这会增加将行对象放入客户端 List 的负担,我宁愿避免这种情况。有没有更好的解决方案?
【问题讨论】:
-
恕我直言,您可以忽略警告。
-
我确定您的实际代码可以编译,但似乎您在这里有一个发布错误:
ListMap<String, Object> allRows,应该是List<Map<String, Object>> allRows -
@Mark E - 谢谢,代码很好,只是在我的帖子中打错了
标签: java generics variadic-functions