que tienen una clase abstracta:método genérico Scala anulando
abstract class Foo(...){
def bar1(f : Foo) : Boolean
def bar2(f : Foo) : Foo
}
múltiples clases se extienden Foo y anulan los métodos
class FooImpl(...) extends Foo{
override def bar1(f : Foo) : Boolean {
...
}
override def bar2(f : Foo) : Foo {
...
}
}
¿Es posible, utilizando los genéricos (o algo así) para hacer que los métodos primordiales ¿tiene el tipo de parámetro de la subclase implementándolo? De esta manera:
class FooImpl(...) extends Foo{
override def bar1(f : FooImpl) : Boolean {
...
}
override def bar2(f : FooImpl) : FooImpl {
...
}
}
que estaba pensando algo a lo largo de la línea de los siguientes, pero eso no parece funcionar ...
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{
...
}
}
Cualquier ayuda es muy apreciada!
Gracias.
Esto hizo posible lo que pensaba que hacer. Entonces, al usar "tipo T <: Foo", creo un tipo T que es Foo o cualquiera de sus subclases, y luego puedo usar ese tipo dentro de la clase como cualquier otro tipo, en cualquier lugar que desee. Ya sea como un parámetro, tipo de var, valor de retorno, ... ¿Correcto? Muchas gracias. En otros comentarios; Estoy gratamente sorprendido por la rapidez de las respuestas a esta publicación. Sombreros fuera :-) –
Estás en lo correcto. –