scala – 冲突的嵌套继承特征
发布时间:2020-12-16 19:19:15 所属栏目:安全 来源:网络整理
导读:假设我有以下代码: trait Trait1 { trait Inner { val name = "Inner1" }}trait Trait2 { trait Inner { val name = "Inner2" }}class Foo extends Trait1 with Trait2 { // I want Concrete1 to be a Trait1.Inner not a Trait2.Inner class Concrete1 ext
假设我有以下代码:
trait Trait1 { trait Inner { val name = "Inner1" } } trait Trait2 { trait Inner { val name = "Inner2" } } class Foo extends Trait1 with Trait2 { // I want Concrete1 to be a Trait1.Inner not a Trait2.Inner class Concrete1 extends Inner val c = new Concrete1 } object Obj { def main(args: Array[String]): Unit = { val foo = new Foo println(foo.c.name) } } 当我在Trait1和Trait2中混合时,指向Inner似乎默认为我混合的第二个特征的内部类型;所以当我调用Obj的主要方法时,它会打印Inner2.如何在Foo中引用Trait1.Inner?以下所有三个都给出了编译器错误: class Concrete1 extends Trait1.Inner class Concrete1 extends Trait1$Inner class Concrete1 extends Trait1#Inner 解决方法
代替
class Concrete1 extends Inner 用这个 class Concrete1 extends super[Trait1].Inner 那应该能得到你想要的东西 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |