当我编译此代码时,它正在显示 [错误]方法查询(String,Object [],ResultSetExtractor)对于类型JdbcTemplate
是不明确的Collection<MyType> col = getJdbcTemplate().query(someQuery, new Object[]{param},
rs -> {
Map<Long, MyType> map = new HashMap();
while (rs.next()) {
// mapping logic
}
return map.values();
});
但如果我将rs
转换为(ResultSetExtractor<Collection<MyType>>)
,它会以某种方式正确编译。
Collection<MyType> col = getJdbcTemplate().query(someQuery, new Object[]{param},
(ResultSetExtractor<Collection<MyType>>) rs -> {
Map<Long, MyType> map = new HashMap();
while (rs.next()) {
// mapping logic
}
return map.values();
});
但我的IDE(带声纳)将其报告为冗余演员,将lambda体内的所有内容报告为未使用。我正在使用jdk 1.8.0_121
请有人对此有所了解,谢谢
答案 0 :(得分:3)
JdbcTemplate
有3个名为query
的方法,其中第一个参数是String
,第二个参数是Object[]
:
query(String sql, Object[] args, ResultSetExtractor<T> rse)
query(String sql, Object[] args, RowCallbackHandler rch)
query(String sql, Object[] args, RowMapper<T> rowMapper)
前两个参数的第三个参数的功能接口采用ResultSet
类型的单个参数:
这就是为什么编译器需要一些帮助来找出你的意思。
那个IDE /声纳有缺陷,无法看到演员是必要的,只是一个错误。