Supongamos que tengo una jerarquía de clases de la siguiente manera:Java Generics, cómo aplicar dos argumentos de un método que extiende una superclase para tener el mismo tipo?
class Vehicle;
class Car extends Vehicle;
class Plane extends Vehicle;
I tienen una función que compara los dos objeto
public <T extends Vehicle> generateDiff(T original, T copy)
En tiempo de compilación, el método anterior garantiza los dos objetos es Vehicle
, pero no puedo asegurarme de que los tipos de los dos objetos sean iguales.
generateDiff(new Car(), new Car()); //OK
generateDiff(new Plane(), new Plane()); //OK
generateDiff(new Car(), new Plane()); //WRONG
¿Se puede lograr esto en tiempo de compilación usando Generics?
P.s: actualmente, lo he implementado arrojará una excepción si el Class
de dos objetos no es el mismo. Pero no estoy satisfecho con esto.
Gracias de antemano.
+1 para inferir el tipo! – UmNyobe