加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:32:22 所属栏目:Java 来源:网络整理
导读:假设我有一个类层次结构如下: class Vehicle;class Car extends Vehicle;class Plane extends Vehicle; 我有一个比较两个对象的功能 public T extends Vehicle generateDiff(T original,T copy) 在编译时,上述方法保证两个对象为Vehicle,但不能确保两个对象
假设我有一个类层次结构如下:
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()是一个静态方法.可新新新新旗新新新新新旗新新旗新旗新旗新旗新旗新旗新旗新新旗新旗新旗新旗旗

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读