Existe uma maneira em Java para chamar o método criança diferente dependendo de qual subclasse é o objeto?

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).

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=315661&siteId=1
Recomendado
Clasificación