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

java – 为什么我不能使用带通配符的多个类型参数?

发布时间:2020-12-15 04:16:13 所属栏目:Java 来源:网络整理
导读:例如:为什么我不能这样做(I1和I2是两个接口): List? extends I1 I2 myList; 请注意,我不希望添加一个扩展I1和I2的新接口,因为它没有任何附加功能,并且只是一个占位符 解决方法 两个原因: 第一个是因为Java不支持多重继承. 第二个是因为这意味着您无法返回
例如:为什么我不能这样做(I1和I2是两个接口):

List<? extends I1 & I2> myList;

请注意,我不希望添加一个扩展I1和I2的新接口,因为它没有任何附加功能,并且只是一个占位符

解决方法

两个原因:

第一个是因为Java不支持多重继承.

第二个是因为这意味着您无法返回具有多种类型的对象.

例如,想象一下myList.get(i)方法.您的示例中应该具有哪种返回类型?它必须是I1或I2,它不能两者兼而有之.

您可以定义一个实现I1和I2的接口,然后使用它 – 但是添加到列表中的所有对象都需要实现新接口.添加实现I1和I2但不是新接口的东西仍然无效.

忘记泛型并尝试编写返回I1和I2的.get()的方法存根 – 你不能这样做,它在Java中是不合法的.泛型不允许你这样做,因为没有办法将生成的代码转换为合法的Java代码.有关为什么Java仅支持单继承的更详细讨论,因为它是更大讨论的一部分.

(编辑:李大同)

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

    推荐文章
      热点阅读