栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么在有界通配符泛型中不能有多个接口?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么在有界通配符泛型中不能有多个接口?

有趣的是,接口

java.lang.reflect.WildcardType
看起来支持通配符arg的上限和下限。每个都可以包含多个边界

Type[] getUpperBounds();Type[] getLowerBounds();

这超出了语言所允许的范围。源代码中有一个隐藏的注释

// one or many? Up to language spec; currently only one, but this API// allows for generalization.

该界面的作者似乎认为这是偶然的限制。

您问题的罐头答案是,泛型本身已经太复杂了;增加更多的复杂性可能被证明是最后一根稻草。

为了使通配符具有多个上限,必须通读规范并确保整个系统仍然有效。

我知道的一个麻烦是类型推断。当前的推理规则根本无法处理交集类型。没有减少约束的规则

A&B << C
。如果我们减少到

    A<<C   or    A<<B

当前任何推理引擎都必须进行大修,以允许这种分歧。但是真正的严重问题是,这允许有多种解决方案,但是没有理由偏爱一个解决方案。

但是,推断对于类型安全性不是必不可少的。在这种情况下,我们可以简单地拒绝推断,并要求程序员显式填充类型参数。因此,推理的难度并不是反对干涉类型的有力依据。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号