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

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仅支持单继承的更详细讨论,因为它是更大讨论的一部分.

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

相关推荐