不存在类型变量T的实例,因此List <t>符合Integer

时间:2016-12-07 14:00:54

标签: java generics lambda type-inference

在以下代码中:

return new HashSet<>(namedParameterJdbcTemplate.query(
    SOME_SQL_QUERY_STRING,
    parametersMap,
    (resultSet, rowNum) -> resultSet.getBigDecimal("GETID")
));

我在(resultSet, rowNum) -> resultSet.getBigDecimal("GETID"))下面出现一条红线,出现以下错误:No instance(s) of type variable(s) T exist so that List<T> conforms to Integer。有人可以帮助我,告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:3)

根本问题是&#34;查询&#34;的不同(不需要的)重载版本。方法是推断的(基于代码)和作为第三个参数给出的lambda(Function)不适合此版本的&#34;查询&#34;。

解决这个问题的一种方法是强迫&#34;强迫&#34;通过提供类型参数来实现所需的查询功能:

return new HashSet<>(namedParameterJdbcTemplate.<BigDecimal>query( ...

答案 1 :(得分:0)

  

在方法调用中添加显式强制转换

在我的情况下,我有

.gitignore

我用它像

<T> Map<String, T> getMap(@NotNull String rootPath, @NotNull Class<T> type)

但它失败并给了我这个错误,所以我通过添加施法

克服了这个错误
LinkedHashMap<String,String> x = xmlRegestryFile.getMap("path/to/map/of/string", String.class)