¿Hay una manera de Java para llamar a un método diferente niño dependiendo de la subclase es el objeto?

orlin614:

En mi proyecto tengo una superclase y dos subclases que se extienden desde la misma. Hay un método en la superclase que está anulado de manera diferente en cada subclase. Quiero saber si es posible introducir un método (en otra clase) que se lleva a objeto de cualquiera de subclase como parámetro y llama a un método anulado en una de las subclases (dependiendo de la subclase a la que hace el objeto pertenecen).

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}

Quiero ser capaz de hacer algo como

Subclass1 subclassObject = new Subclass1;
System.out.println(CallingClass.dependantCall(subclassObject));

y obtener una salida

1
Prashant Pandey:

Sí, es totalmente posible. Así es como ese método se vería así:

public <T extends Superclass> void foo(T subclassObject) {
...
} 

O:

public void foo(Superclass obj) {
...
}

Tenga en cuenta que en el método anterior, se puede pasar objetos subclases, así (que son tipos de datos covariantes).

Supongo que te gusta

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