如何将vararg传递给Kotlin中的varag函数或构造函数?

Kotlin不允许我的子类将vararg传递给我的超类构造器这里是我的操作类:

package br.com.xp.operation import java.util.ArrayList abstract class Operation(vararg values: Value) : Value { protected var values: MutableList = ArrayList() internal abstract val operator: String } 

这里是我的SubtractionOperation类:

 package br.com.xp.operation class SubtractionOperation private constructor(vararg values: Value) : Operation(values) { override val operator: String get() = "-" } 

编译说:

types不匹配必需的值find数组

任何人都可以解释为什么这是不可能的?

从文档 :

在一个函数内部,一个typesT的variables参数可以看作是T一个数组。

所以在SubtractionOperation构造函数中, values实际上是一个Array 。 您需要使用展开运算符( * )来转发这些:

 class SubtractionOperation private constructor(vararg values: Value) : Operation(*values) ...