Java generics - substituindo um método abstrato e tendo o tipo de retorno da subclasse
Estou tentando criar uma configuração em que um conjunto de subclasses substitui uma superclasse. Essa superclasse contém um método abstrato - cujo tipo de retorno seria idealmente o objeto a partir do qual esse método foi chamado, de forma que ele se comporte efetivamente da seguinte maneira:
public abstract class SuperClass{
public abstract SuperClass getSelf();
}
public class SubClass extends SuperClass{
@Override
public SubClass getSelf(){
return this;
}
}
Eu não tenho certeza se isso é possível, pois acho que os tipos de retorno sempre precisam ser os mesmos para que a substituição funcione - no entanto, estive pensando que a resposta, se existir, se encontra em algum lugar nessa linha ...
public abstract class SuperClass{
public abstract <? extends SuperClass> getSelf();
}
public class SubClass extends SuperClass{
@Override
public SubClass getSelf(){
return this;
}
}
Obrigado por qualquer ajuda
edit: adicionado estende SuperClass para SubClass, duh