在Scala中,我希望具有以下特征和类
trait Paper {
def paint(args: Material): Unit
}
class WhitePaper extends Paper {
override def paint(args: DarkMaterial): Unit = {
darkMaterials.open()
}
}
trait Material {
def open() : Unit = {}
}
class DarkMaterial extends Material{
override def open() : Unit = {
print("Dark material")
}
}
但是,即使DarkMaterial扩展了Material,我的IDE仍显示错误的方法paint(args:DarkMaterial)的覆盖。为什么会这样呢?有人知道如何解决吗?
非常感谢。
最佳答案
您可以使用类型参数确定内容。
trait Paper[M] {
def paint(args: M): Unit
}
class WhitePaper extends Paper[DarkMaterial] {
override def paint(args: DarkMaterial): Unit = { // "override" not needed
args.open()
}
}
// Material and DarkMaterial are unchanged