scala générique de la redéfinition de méthode

J'ai une classe abstraite :

abstract class Foo(...){
   def bar1(f : Foo) : Boolean
   def bar2(f : Foo) : Foo
}

plusieurs classes d'étendre Foo et surcharger les méthodes

class FooImpl(...) extends Foo{
    override def bar1(f : Foo) : Boolean {
        ...
    }
    override def bar2(f : Foo) : Foo {
        ...
    }
} 

Est-il possible, à l'aide de médicaments génériques (ou quelque chose) pour faire de la redéfinition des méthodes ont la parametertype de la sous-classe de la mettre en œuvre? Comme ceci :

class FooImpl(...) extends Foo{
    override def bar1(f : FooImpl) : Boolean {
        ...
    }
    override def bar2(f : FooImpl) : FooImpl {
        ...
    }
}

Je pensais à quelque chose le long de la ligne de la suite, mais cela ne semble pas fonctionner...

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{
       ...
    }
}

Toute aide est très appréciée!

Merci.

OriginalL'auteur Jannik Luyten | 2011-01-07