如何将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数组
任何人都可以解释为什么这是不可能的?
从文档 :
在一个函数内部,一个types
T
的variables参数可以看作是T
一个数组。
所以在SubtractionOperation
构造函数中, values
实际上是一个Array
。 您需要使用展开运算符( *
)来转发这些:
class SubtractionOperation private constructor(vararg values: Value) : Operation(*values) ...