【发布时间】:2021-06-24 17:40:20
【问题描述】:
我正在尝试将 scala 2.12 升级到 scala 2.13.5
类线性化不适用于我,IntelliJ 和 Scala 编译器会引发错误,但理想情况下它应该可以工作。下面是问题。
trait A[E] {
def getObject: E = {
// some implementation
}
}
abstract class B[T](e: Object) {
def getObject: T = {
// some implemntation
}
}
class C[T] extends B[T](null) with A[String] {
def myMethod(): Unit = {
println(this.getObject.someMethodWhichIsNotInStringClassButAvailableInTClass)
}
}
在上面的示例程序中,this.getObject 也来自A,我希望它来自B。看来我的理解是错误的。但是需要详细了解这个类linearization问题。
由于上述问题,我的代码无法编译,因为 String 类中没有所需的方法。
同样的代码可以用 scala 2.12 编译,但不能用 scala 2.13.5。
【问题讨论】:
-
很奇怪,但您在 Scastie 中为 Scala 2.13 编写代码:scastie.scala-lang.org/6xi5ySqISjm3N6niX84Pfw
标签: scala inheritance multiple-inheritance