次のようなクラス階層があるとします。
class Vehicle;
class Car extends Vehicle;
class Plane extends Vehicle;
2つのオブジェクトを比較する関数があります
public <T extends Vehicle> generateDiff(T original, T copy)
コンパイル時に、上記のメソッドは 2 つのオブジェクトがVehicle
であることを保証しますが、2 つのオブジェクトの型が同じであることは確認できません。
generateDiff(new Car(), new Car()); //OK
generateDiff(new Plane(), new Plane()); //OK
generateDiff(new Car(), new Plane()); //WRONG
Generics を使用してコンパイル時にこれを実現できますか?
Ps: 現在、Class
2 つのオブジェクトの が同じでない場合に例外をスローするように実装しました。しかし、私はこれに満足していません。
前もって感謝します。