Aru*_*nan 15 java collections spring guava
我第一次尝试番石榴,我发现它真的很棒.
我在Spring jdbc模板上执行几个参数化检索查询.DAO(AbstractDataAccessObject
)中的方法是这样的.这里没问题.
public Map<String,Object> getResultAsMap(String sql, Map<String,Object> parameters) {
try {
return jdbcTemplate.queryForMap(sql, parameters);
} catch (EmptyResultDataAccessException e) {
//Ignore if no data found for this query
logger.error(e.getMessage(), e);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
这是问题所在:
当我用这个方法调用时
getResultAsMap(query, new HashMap<String,Object>(ImmutableMap.of("gciList",gciList)));
Run Code Online (Sandbox Code Playgroud)
它很棒.
但是当我这样做的时候
getResultAsMap(query, Maps.newHashMap(ImmutableMap.of("gciList",gciList)));
Run Code Online (Sandbox Code Playgroud)
编译器不高兴说
The method getResultAsMap(String, Map<String,Object>) in the type AbstractDataAccessObject is not applicable for the arguments (String, HashMap<String,List<String>>)
我做错了什么或者这个投诉的原因是什么?
art*_*tol 32
这是类型推断失败.Maps.newHashMap
是一种静态参数化方法.它允许你使用
Map<String,Integer> map = Maps.newHashMap()
Run Code Online (Sandbox Code Playgroud)
代替
Map<String,Integer> map = new HashMap<String,Integer>()
Run Code Online (Sandbox Code Playgroud)
使您不必输入<String,Integer>
两次.在Java 7中,钻石运算符允许您使用
Map<String,Integer> map = new HashMap<>()
Run Code Online (Sandbox Code Playgroud)
所以这个方法是多余的.
要回答您的问题,只需使用该new HashMap
版本,因为类型推断不适用于方法参数.(您可以使用,Maps.<String,Object>newHashMap()
但这会使用该方法失败)
归档时间: |
|
查看次数: |
25405 次 |
最近记录: |