【发布时间】:2019-10-03 22:39:48
【问题描述】:
现有 spring 的 JdbcTemplate 有签名:
public <T> List<T> query(String sql, RowMapper<T> rowMapper)
我可以用实现接口的 lambda 调用它:
jdbcTemplate.query("select ...", { rs, _ -> 5 })
但是当我在 kotlin 中声明相同的函数时:
fun <T> query(sql: String, rowMapper: RowMapper<T>): List<T> = TODO()
并尝试以相同的方式调用它:
query("select ...", { rs, _ -> 5 })
我得到一个编译错误
类型推断失败: 有趣的查询 ( sql:字符串, 行映射器:行映射器 ) : 列表 不能应用于 ( 细绳, (???, ???) → 整数 )
我要写
query("select ...", RowMapper{ rs, _ -> 5 })
为什么?有没有办法只提供 lambda?
【问题讨论】:
标签: kotlin types type-inference