在 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")
}
}
但是,我的 IDE 显示重写方法 paint(args: DarkMaterial) 的错误,即使 DarkMaterial 扩展了 Material。为什么这是错误的?任何人都知道如何解决它?
非常感谢。
最佳答案
您可以使用类型参数来确定事情。
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
关于java - Scala类继承和方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620694/