【发布时间】:2011-07-29 09:37:43
【问题描述】:
我正在寻找一种方法来定义返回类型 T 的方法,其中 T = 子类的类型。
我知道我可以使用抽象类型来做到这一点,但不喜欢必须为每个子类重新定义 T 的开销。
一些示例代码:
object Helper {
def help[A <: MyClass](cls: A): Option[A] = { cls.foo() map { _.asInstanceOf[A] } }
}
class MyClass {
type T <: MyClass
def foo(): Option[T] = Some(this.asInstanceOf[T])
}
class ChildClass extends MyClass {
type T = ChildClass
}
可能是一种新的语言功能使这变得更容易了?或者我可以以某种方式使用 this.type 吗?对我来说重要的是我能够定义一个可以以这种方式调用 foo 的辅助类。
【问题讨论】:
标签: scala