gpt4 book ai didi

java - Scala类继承和方法参数

转载 作者:行者123 更新时间:2023-11-30 10:41:07 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com