首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java JLS,类型的超级类型集。

Java JLS,类型的超级类型集。
EN

Stack Overflow用户
提问于 2017-08-06 19:38:31
回答 1查看 110关注 0票数 1

JLS的部分描述了ST(U)是什么,其中U是一种类型:

设ST( Ui )是Ui的一组超级类型。

在同一节的这几行中,有一个例子:

例如,给定的List和List,只要将集合ST( List ) ={List、Collection、Object }和ST(List) ={List、Collection、Object }相交,就会产生一个集合{ Object },并且我们会忘记一个事实,即上限可以安全地假定为一个列表。

ST(列表)不应该包括Iterable吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-06 20:07:23

你说得对,ST(List<String>)应该包含Iterable<String>。而且,ST(List<String>)应该包含ListList的所有超级类型,因为JLS 8第4.10.2节

给定泛型类型声明C<F1,...,Fn> (n > 0),参数化类型C<T1,...,Tn>的直接超类型(其中Ti (1≤I≤n)是一种类型)全部如下:

  • ..。
  • 生C型。

因此,这个例子并没有实际演示它试图演示的内容,因为在ESTs进入图片之前,List实际上处于ST(List<String>)ST(List<Object>)的交集中。

我认为该示例可能是为超级类型规则的早期版本编写的,但在规则更改时没有更新。Java7JLS 以不同的方式定义超类型关系,但即便如此,我也认为Iterable<String>List<String>的超级类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45535893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档