微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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()是一个静态方法.可新新新新旗新新新新新旗新新旗新旗新旗新旗新旗新旗新旗新新旗新旗新旗新旗旗

原文地址:https://www.jb51.cc/java/125074.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐