首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我们把无界的通配符参数化类型称为可读的?

为什么我们把无界的通配符参数化类型称为可读的?
EN

Stack Overflow用户
提问于 2013-08-23 20:37:10
回答 2查看 806关注 0票数 5

我正在通过AngelikaLangerDoc阅读。在间隔了将近三天之后,我正在读它。在前面的课中,我了解到,unbounded wild card数组是允许创建的。我还研究了无界的外卡参数化类型称为Reifiable types。当我搜索可还原类型的定义时,它指出,在运行时已知类型信息的类型称为reifiable type。从文章中挑选一个代码片段。

代码语言:javascript
运行
复制
Pair<?,?>[] iniPair = new Pair<?,?>[10];

我脑子里有以下的困惑。

  1. 为什么我们说无界的通配符参数化类型被称为reifiable?
  2. 在上面的例子中,类型信息是如何知道的?

我知道这是个基本问题。我只是想重新振作起来,回到泛型的轨道上来。有人能详细说明这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-23 20:47:20

因为Java编译器将所有无界类型参数替换为Object

根据类型擦除

为了实现泛型,Java编译器将类型擦除应用于: 1.将泛型类型中的所有类型参数替换为它们的界或对象(如果类型参数是无界的)。因此,生成的字节码只包含普通类、接口和方法。 2.必要时插入类型转换,以保持类型安全。3.生成桥梁方法,以保留扩展泛型类型中的多态性。

根据Javadoc,术语是可以衡量的

可还原类型是其类型信息在运行时完全可用的类型。这包括原语、非泛型类型、原始类型和未绑定通配符的调用。

票数 4
EN

Stack Overflow用户

发布于 2013-08-23 20:39:51

从该网站:

Java中的可还原类型只是那些具体化不会产生影响的类型,也就是说,不需要任何类型参数的运行时表示的类型。

通配符参数中没有类型信息,因此擦除不会丢失任何信息。

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

https://stackoverflow.com/questions/18411440

复制
相关文章

相似问题

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