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

标签 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 .有人可以帮我说说为什么会这样吗?

最佳答案

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

解决此问题的一种方法是通过提供类型参数来“强制”您想要的查询功能:

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

关于java - 不存在类型变量 T 的实例,因此 List<T> 符合 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41019400/

相关文章:

java - LocalDateTime.now() 错误的时间

java - Java 首选项存储在 Mac OS X 上的什么位置?

java - 在主页中,当我们导航到另一个页面并返回主页时,返回用户名时出现错误

Python pandas - 在 groupby 之后过滤行

java - java如何区分Lambda中的Callable和Runnable?

Java 8 方法引用未处理的异常

java - 通用比较器

generics - 具有通用参数类型的函数

delphi - 我可以在 Delphi 中创建特定接口(interface)的通用列表吗?

ios - 使用 Swift 泛型编写带有完成 block 的 API 请求