Supponiamo di avere una gerarchia di classi come segue:Java Generics, come applicare due argomenti di un metodo che estendono una superclasse per avere lo stesso tipo?
class Vehicle;
class Car extends Vehicle;
class Plane extends Vehicle;
Ho una funzione che confronta i due oggetti
public <T extends Vehicle> generateDiff(T original, T copy)
In fase di compilazione, il suddetto metodo garantisce i due oggetti è Vehicle
, ma non posso assicurarmi che i tipi dei due oggetti siano gli stessi.
generateDiff(new Car(), new Car()); //OK
generateDiff(new Plane(), new Plane()); //OK
generateDiff(new Car(), new Plane()); //WRONG
Posso ottenere questo in fase di compilazione utilizzando Generics?
P.s: attualmente, l'ho implementato genererà un'eccezione se lo di due oggetti non è lo stesso. Ma non sono soddisfatto di questo.
Grazie in anticipo.
+1 per inferire il tipo! – UmNyobe