Предположим, что у меня есть иерархию классов следующим образом:Java Generics, как применять два аргумента метода, которые расширяют суперкласс для того же типа?
class Vehicle;
class Car extends Vehicle;
class Plane extends Vehicle;
я функцию, которая сравнивает два объекта
public <T extends Vehicle> generateDiff(T original, T copy)
Во время компиляции, способ выше, гарантирует двух объектов Vehicle
, но не может гарантировать, что типы двух объектов одинаковы.
generateDiff(new Car(), new Car()); //OK
generateDiff(new Plane(), new Plane()); //OK
generateDiff(new Car(), new Plane()); //WRONG
Могу ли я получить это во время компиляции с помощью Generics?
P.s: В настоящее время я реализовал это, будет генерировать исключение, если Class
двух объектов не совпадают. Но я не доволен этим.
Заранее спасибо.
+1 для выводя тип! – UmNyobe