我在我的项目中使用 NamedParameterJdbcTemplate 并以这种方式传递参数:
MapSqlParameterSource(mapOf(
"userId" to userId,
"count" to count
))
我不想一直写第一行,我想创建自己的函数,该函数将采用字符串到任意值对:
params(
"userId" to userId,
"count" to count
)
但是当我尝试实现它时,我遇到了泛型问题(我没有在此处发布错误描述):
fun params(vararg pairs: Pair<String, Any>) = MapSqlParameterSource(mapOf(pairs))
您能否就正确实现提出建议?
最佳答案
mapOf
有 3 种实现:不取任何东西、取 1 对和取一对可变参数。
自 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))
关于java - 在 Kotlin 中映射的可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42222573/