Kotlin不允许我的子类将vararg传递给我的超类构造器这是我的Operation类:
package br.com.xp.operation
import java.util.ArrayList
abstract class Operation(vararg values: Value) : Value {
protected var values: MutableList<Value> = ArrayList()
internal abstract val operator: String
}
Run Code Online (Sandbox Code Playgroud)
这是我的SubtractionOperation类:
package br.com.xp.operation
class SubtractionOperation private constructor(vararg values: Value) : Operation(values) {
override val operator: String
get() = "-"
}
Run Code Online (Sandbox Code Playgroud)
编译说:
类型不匹配必需值找到数组
任何人都可以解释为什么这是不可能的?
Oli*_*rth 41
来自文档:
在函数内部
vararg,类型的参数T作为数组可见T.
所以在SubtractionOperation构造函数中,values确实是一个Array<Value>.您需要使用spread运算符(*)来转发它们:
class SubtractionOperation private constructor(vararg values: Value) : Operation(*values) ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4133 次 |
| 最近记录: |