我在项目中使用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))
您能否就正确实施提出建议?
答案 0 :(得分:6)
mapOf
有3个实现:不采取任何措施,采取一对并采取一对vararg。
由于代码中的pairs
实际上是Array<Pair<String, Any>>
,因此无法调用mapOf
的匹配实现。这是因为java实现它们的varargs在某些情况下是不明确的,因此Kotlin需要显式参数。
要使其工作,请使用&#34; spread&#34;运算符表示应该使用vararg方法。 (https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs)
fun params(vararg pairs: Pair<String, Any>) = MapSqlParameterSource(mapOf(*pairs))