为何Lambda表达式的参数无法被识别为ResultSet类型?
问题:ResultSet转Poi实例的转换函数类型识别错误
我在构建转换函数静态库时遇到类型识别问题:poiTransformer函数预期接收ResultSet并返回Poi实例,但IntelliJ持续报错。尝试三种写法后出现以下问题:
- 写法1、3:提示
Cannot resolve method 'getMetaData' in 'Object' - 写法2:提示
Incompatible parameter types in lambda expression: expected Object but found ResultSet
核心困惑是IDE无法将参数rs识别为ResultSet类型,导致无法调用其方法。
解决方案
最终通过修正函数签名解决了问题,正确的函数签名为:
static Function<ResultSet, LinkedHashMap<String, PoiPin>> poiTransformer()
错误原因
这类错误的核心是函数泛型类型声明不明确,IDE无法推断lambda参数的具体类型,默认将其视为Object类型。修正后的签名明确指定了Function的输入为ResultSet、输出为LinkedHashMap<String, PoiPin>,IDE就能正确识别参数类型,解析getMetaData等方法调用。
内容的提问来源于stack exchange,提问作者Robert S
相关产品推荐
相关产品推荐

