我的理解是C#和java在某些方面在泛型方面有所不同,其中之一是泛型类型参数在运行时在C#/ .NET中可用但在Java中不可用.为什么Java语言设计者会这样做?
允许二进制兼容pre-generics字节码,因此允许新代码与旧代码接口.
在The Java Tutorials 的Type Erasure页面中:
类型擦除使得使用泛型的Java应用程序能够维护与泛型之前创建的Java库和应用程序的二进制兼容性.
[...]
存在类型擦除,以便新代码可以继续与遗留代码接口.
有关相关问题,请查看C#与Java泛型.