Java泛型,如何强制扩展超类以具有相同类型的方法的两个参数?

假设我有一个类层次结构如下:
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

我可以在编译时使用泛型吗?

P.s:目前,如果两个对象的Class不一样,我已经实现了它会抛出异常.但我对此不满意.

提前致谢.

解决方法

是的,你可以(种)!

类型T的参数为inferred,但您可以指定类型:

MyClass.<Car>generateDiff(new Car(),new Plane()); // generates a compile error

新新200新新200 200 200 200 200:200 200 200 200: CE X- 200 200 200:200 200 200:20045 200 X-

generateDiff(new Car(),new Plane()); // type is inferred as Vehicle
MyClass.<Vehicle>generateDiff(new Car(),new Plane());

上面的代码假定generateDiff()是一个静态方法.可新新新新旗新新新新新旗新新旗新旗新旗新旗新旗新旗新旗新新旗新旗新旗新旗旗

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...