我有像这样声明的抽象令牌类:
abstract class Token(var index: Int = 0) {
open fun merge(toMerge: Token): Token? {
return null
}
}
我想在数据类中继承index属性,如下所示:
data class CloseLoop(index: Int, var openLoopIndex: Int = 0) : Token(index)
但它给了我错误Data class primary constructor must have only property (val / var) parameters
我需要做些什么来解决这个问题?
答案 0 :(得分:9)
至少有两种解决方法:
在数据类主构造函数声明中创建属性abstract class Token(open var index: Int = 0)
data class CloseLoop(
override var index: Int,
var openLoopIndex: Int = 0
) : Token(index)
和override:
data class CloseLoop(val theIndex: Int, var openLoopIndex: Int = 0) : Token(theIndex)
使用其他名称声明属性并使用它初始化基类:
private
如果您认为合适,请将其设为{{1}}。