如何将可变参数转换为列表?

Ter*_*rry 9 generics variadic-functions kotlin

我有一个带有可变参数的函数。这个 vararg 参数需要作为列表传递给另一个函数。

如何将 vararg 参数转换为列表?listOf()给了我一个错误。

fun insertMissingEntities(vararg entities: Entity) {
  val list = listOf(entities)
  passMissingEntities(list) // Type mismatch. 
                            // Required: List<Entity>
                            // Found: List<Array<out Entity>>
}
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 11

您可以使用扩展函数.asList(),它不会添加复制(与listOf扩展运算符不同)。

fun insertMissingEntities(vararg entities: Entity) {
  passMissingEntities(entities.asList())
}
Run Code Online (Sandbox Code Playgroud)


Ter*_*rry 7

可变参数参数需要使用扩展运算符进行扩展*

fun insertMissingEntities(vararg entities: Entity) {
  val list = listOf(*entities)
  passMissingEntities(list)
}
Run Code Online (Sandbox Code Playgroud)