我有一個抽象類:Scala的泛型方法重寫
abstract class Foo(...){
def bar1(f : Foo) : Boolean
def bar2(f : Foo) : Foo
}
多類擴展Foo和覆蓋的方法
class FooImpl(...) extends Foo{
override def bar1(f : Foo) : Boolean {
...
}
override def bar2(f : Foo) : Foo {
...
}
}
是否有可能,使用泛型(或東西),使覆蓋方法有實現它的子類的參數類型?就像這樣:
class FooImpl(...) extends Foo{
override def bar1(f : FooImpl) : Boolean {
...
}
override def bar2(f : FooImpl) : FooImpl {
...
}
}
我在想沿着以下線的東西,但似乎並沒有工作...
abstract class Foo(...){
def bar1[T <: Foo](f : T) : Boolean
def bar2[T <: Foo](f : T) : T
}
class FooImpl(...) extends Foo{
override def bar1[FooImpl](f : FooImpl) : Boolean {
...
}
override def bar2[FooImpl](f : FooImpl) : FooImpl{
...
}
}
任何幫助,非常感謝!
謝謝。
這使人們有可能是我的本意去做。因此,通過使用「type T <:Foo」,我創建了一個類型T,它既可以是Foo也可以是其任何子類,然後我可以在類中像任何其他類型那樣使用該類型,無論我想要什麼。無論是作爲參數,var類型,返回值,...正確?非常感謝你。在旁註中;我對這篇文章的反應速度感到驚喜。帽子關閉:-) – 2011-01-07 17:26:19
你是對的。 – 2011-01-07 17:42:22