我有以下代码:
trait CellT[VAL <: AnyVal] {
var value: VAL
type NEXT <: AnyVal
var next: CellT[NEXT]
}
abstract class Cell[VAL <: AnyVal] extends CellT[VAL] {
var next = this // defaults to `this`. ERROR
}
// impl example:
class CellInt extends Cell[Int] {
var value: Int = 0
}
错误说
在 Cell[Cell.this.NEXT] 类型的特征 CellT 中覆盖变量 next;变量 next 具有不兼容的类型
很明显,this
它将具有与VAL <: AnyVal
相同的类型NEXT <: AnyVal
,但是,我仍然得到错误。我如何告诉 Scalanext
应该能够返回任何类型Cell[A <: AnyVal]
,但这种类型不应该与类类型参数相同[VAL <: AnyVal]
???否则我可以使用[VAL]
,但它会限制太多,例如因为Cell[Int]
它会限制next
方法只返回Cell[Int]
类型实例。但我希望next
可以重新分配给任何其他Cell[*]
类型的实例。