awf*_*fun 2 java generics dictionary kotlin
我在项目中使用NamedParameterJdbcTemplate并以这种方式传递参数:
MapSqlParameterSource(mapOf(
"userId" to userId,
"count" to count
))
Run Code Online (Sandbox Code Playgroud)
我不想一直写第一行,我想创建自己的函数,它将采用成对的字符串到任意值:
params(
"userId" to userId,
"count" to count
)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试实现它时,我遇到了泛型问题(我不在这里发布错误描述):
fun params(vararg pairs: Pair<String, Any>) = MapSqlParameterSource(mapOf(pairs))
Run Code Online (Sandbox Code Playgroud)
你能否就正确实施提出建议?
mapOf 有3个实现:什么都不做,拿1对,并采取一对vararg.
因为pairs在你的代码中实际上Array<Pair<String, Any>>没有匹配的实现mapOf来调用.这是因为在某些情况下,java实现它们的varargs是不明确的,因此Kotlin需要显式参数.
为了使其工作,使用"spread"运算符来指示应该使用vararg方法.(https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs)
fun params(vararg pairs: Pair<String, Any>) = MapSqlParameterSource(mapOf(*pairs))
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |