我已经定义了以下特征:
trait Felem[T <: Felem[T]] {
def mul(that: T): T
def square: T = this.mul(this.asInstanceOf[T])
}
我还根据这个特征定义了一个类:
class F2elem(val coef: Boolean) extends Felem[F2elem] {
override def square: F2elem = this.mul(this)
...
}
我的问题是关于特征中“square”方法的定义中是否需要“asInstanceOf”。如果我删除它,我会收到以下错误:
error: type mismatch;
found : Felem.this.type (with underlying type Felem[T])
required: T
def square: T = this.mul(this)
- 为什么在 trait 中需要它?
- 为什么课堂上不需要它?
- 它在执行时间或内存方面有什么成本吗?