¿Cómo utilizar genéricos en Java al tratar con múltiples objetos heterogéneos?
Digamos que tengo dos clases que se ven así:
public class classA {
private Boolean is_started;
public classA(Boolean is_started) {
this.is_started = is_started;
}
public Boolean getIs_started(){
return this.is_started;
}
}
public class classB {
private String token;
public classA(String token) {
this.token = token;
}
public String get_token(){
return this.token;
}
}
Estoy llamando a esas dos clases desde otra clase como así:
public class CallingClass {
public void function1() {
ClassA stepA = new ClassA(<algún booleano="">);
commonFunction(stepA);
}
public void function2() {
ClassB stepB = new ClassB(<algún string="">);
commonFunction(stepB);
}
public <t> void commonFunction(Class<t> dataObject) {
//Una declaración if que tiene una condición que solo llama una función en classB {
String token = dataObject.get_token();
}
//Una declaración if que tiene una condición que solo llama una función en classA {
Boolean is_started = dataObject.getIS_started();
}
//Hay un error que dice: El método [get_token()/getIS_started()] no está definido para el tipo Class<t>
Quiero asegurarme de que puedo llamar a diferentes objetos sin especificarlos en la función. Por ejemplo, quiero suministrar ClassA
y ClassB
como argumento a commonFunction
como en el ejemplo anterior. ¿Cómo puedo hacerlo con genéricos?</algún></algún>
davy.ai
Para lograrlo con genéricos, debes definir la función común de la siguiente manera:
Con este cambio, ahora puedes llamar a la
commonFunction
con cualquier objeto de tipoClassA
oClassB
, sin tener que especificarlos en la función. El operadorinstanceof
se utiliza para determinar el tipo de objeto en tiempo de ejecución, y luego se llama al método correspondiente según el tipo.