orlin614:
No meu projeto eu tenho uma superclasse e duas subclasses estendendo-se a partir dele. Existe um método na superclasse que é anulado de forma diferente em cada subclasse. Eu quero saber se é possível introduzir um método (em uma outra classe) que leva objeto de qualquer subclasse como um parâmetro e chama um método anulado em uma das subclasses (dependendo de qual subclasse faz o objeto pertence).
public class Superclass{
public int method(){return 0;}
}
public class Subclass1 extends Superclass{
public int method(){return 1;}
}
public class Subclass2 extends Superclass{
public int method(){return 2;}
}
public class CallingClass{
public static int dependantCall(Superclass parameter){return parameter.method}
Eu quero ser capaz de fazer algo assim
Subclass1 subclassObject = new Subclass1;
System.out.println(CallingClass.dependantCall(subclassObject));
e obter uma saída
1
Prashant Pandey:
Sim, é inteiramente possível. Veja como esse método seria algo como:
public <T extends Superclass> void foo(T subclassObject) {
...
}
Ou:
public void foo(Superclass obj) {
...
}
Note-se que no método acima, você pode passar objetos subclasses bem (eles são tipos de dados covariantes).