Java 为什么要传递临时创建的HashMap<&燃气轮机;数组作为参数不明确?
考虑下面这个类示例:Java 为什么要传递临时创建的HashMap<&燃气轮机;数组作为参数不明确?,java,generics,ambiguous,Java,Generics,Ambiguous,考虑下面这个类示例: 公共类MyDAO扩展了NamedParameterJDBCDAO支持 { 公共int add(HashMap映射) { getNamedParameterJdbcTemplate().batchUpdate( “插入…”, mapping.keySet().stream().map(t->newhashmap()) {{ //根据t向映射中添加一些键/值对 }} ).toArray(HashMap[]::new)); } } 我的IDE(IntelliJ)可以使用这个构造
公共类MyDAO扩展了NamedParameterJDBCDAO支持
{
公共int add(HashMap映射)
{
getNamedParameterJdbcTemplate().batchUpdate(
“插入…”,
mapping.keySet().stream().map(t->newhashmap())
{{
//根据t向映射中添加一些键/值对
}}
).toArray(HashMap[]::new));
}
}
我的IDE(IntelliJ)可以使用这个构造,但是通过maven编译它会产生一个编译错误,表示对batchUpdate的引用不明确。有两种可用的batchUpdate()
方法:
batchUpdate(字符串,映射[])
batchUpdate(字符串,SqlParameterSource[])
batchUpdate()
之前创建HashMap并将其作为参数传递时,编译器错误不会显示
HashMap[]批处理值=…;//同样的lambda结构
getNamedParameterJdbcTemplate().batchUpdate(“插入…”,BatchValue);
这里发生了什么,为什么会这样?这两种方法在语法上都应该是有效的。IntelliJ是否配置为使用与maven使用的Java编译器相同的版本?@dasblinkenlight:是。它只是安装的JDK的一个版本
javac-version
产生1.8.0_66
。IntelliJ是否配置为使用与maven使用的相同版本的Java编译器?@dasblinkenlight:Yes。它只是安装的JDK的一个版本javac-version
产生1.8.0\u 66
。