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仅支持单继承的更详细讨论,因为它是更大讨论的一部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |