J S*_*ith 5 .net java generics type-erasure raw-types
我的理解是,Java中存在原始类型和类型擦除的原因是因为在引入泛型时,有些标准API在不破坏现有代码的情况下无法通用.
在某些时候,Generics也被引入到.NET中,但是这个功能的实现方式不依赖于原始类型或类型擦除(如果确实如此,它以对用户透明的方式实现) ).因此,现有的API保持不变(例如,System.Collections命名空间中的代码),并引入了新的通用API(例如,System.Collections.Generic命名空间中的代码).
那么,与.NET泛型不同,Java泛型如何需要原始类型/类型擦除?
.Net通过更改字节码语言,虚拟机和JITter来识别泛型类型,从而引入了泛型.
这是一项花了大约两年时间的大量工作.
Java将泛型引入纯粹的编译时功能,只有很小的运行时更改(新的元数据和反射API).
这是一个更简单的任务,它保持向后兼容较旧的运行时,但使用起来更烦人.
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |