在某种程度上,将来将通过项目valhalla删除擦除 *** 作,以实现针对价值类型的专门实现。
或者更准确地说,类型擦除确实意味着不存在泛型的类型专门化,而valhalla将在基元上引入专门化。
具体来说,我在问是否有任何技术原因导致无法在下一版JVM中删除类型擦除
性能。您不必为泛型类型,实例或生成的类的所有组合生成专门的代码,而不必携带类型标签,多态内联缓存和运行时类型检查(由编译器生成的
instanceof检查)保持简单,我们仍然可以通过编译时检查进行类型安全。
当然也有很多缺点,但是已经进行了权衡,还有一个问题是什么会促使JVM开发人员改变这种权衡。
而且这也可能是兼容性,可能有一些代码依靠依赖类型擦除来执行未经检查的强制转换以滥用泛型集合,如果强制执行类型约束,类型擦除会破坏类型集合。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)