假设我有以下特征:
trait Foo[T] {
def returnMyself: T
}
有没有办法告诉scala任何扩展Foo
的类使用本身作为泛型参数?
基本上,我想要实现的是能够写
class Bar extends Foo {
override def returnMyself: Bar = this
}
无需明确写入
class Bar extends Foo[Bar]
我希望我已经清楚了
答案 0 :(得分:0)
你应该能够使用自我类型:
trait Foo { self =>
def returnMyself: self.type
}
class Bar extends Foo {
override def returnMyself = this
}