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

2022-09-03 07:50:22

在下面的代码中:

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


答案 1

根本问题是推断出“query”方法的不同(不需要的)重载版本(基于代码),并且作为第三个参数给出的lambda(函数)不适合此版本的“query”。

解决此问题的一种方法是通过提供类型参数来“强制”所需的查询函数,如下所示:

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

答案 2

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

在我的情况下,我有

<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)

但它失败了,给了我那个错误,所以我通过添加投射来克服这个错误

x = (LinkedHashMap<String, String>) xmlRegestryFile.getMap("my/path", String.class)

推荐