我正在通过AngelikaLangerDoc阅读。在间隔了将近三天之后,我正在读它。在前面的课中,我了解到,unbounded wild card数组是允许创建的。我还研究了无界的外卡参数化类型称为Reifiable types。当我搜索可还原类型的定义时,它指出,在运行时已知类型信息的类型称为reifiable type。从文章中挑选一个代码片段。
Pair<?,?>[] iniPair = new Pair<?,?>[10];我脑子里有以下的困惑。
我知道这是个基本问题。我只是想重新振作起来,回到泛型的轨道上来。有人能详细说明这个问题吗?
发布于 2013-08-23 20:47:20
因为Java编译器将所有无界类型参数替换为Object。
根据类型擦除
为了实现泛型,Java编译器将类型擦除应用于: 1.将泛型类型中的所有类型参数替换为它们的界或对象(如果类型参数是无界的)。因此,生成的字节码只包含普通类、接口和方法。 2.必要时插入类型转换,以保持类型安全。3.生成桥梁方法,以保留扩展泛型类型中的多态性。
根据Javadoc,术语是可以衡量的
可还原类型是其类型信息在运行时完全可用的类型。这包括原语、非泛型类型、原始类型和未绑定通配符的调用。
发布于 2013-08-23 20:39:51
从该网站:
Java中的可还原类型只是那些具体化不会产生影响的类型,也就是说,不需要任何类型参数的运行时表示的类型。
通配符参数中没有类型信息,因此擦除不会丢失任何信息。
https://stackoverflow.com/questions/18411440
复制相似问题