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

前端之家收集整理的这篇文章主要介绍了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()是一个静态方法.可新新新新旗新新新新新旗新新旗新旗新旗新旗新旗新旗新旗新新旗新旗新旗新旗旗

猜你在找的Java相关文章