我的理解是,Java 中有原始类型和类型擦除的原因是因为在引入泛型的时候,有一些标准 API 在不破坏现有代码的情况下无法实现泛型。
泛型也被引入到 .NET 中,但是这个特性的实现方式不依赖于原始类型或类型擦除(如果是这样,它以对用户透明的方式实现) )。因此,现有 API 保持不变(例如,System.Collections 命名空间中的代码)并引入了新的通用 API(例如,System.Collections.Generic 命名空间中的代码)。
那么,与 .NET 泛型不同,Java 泛型为何需要原始类型/类型擦除呢?