泛型与泛型擦除
泛型技术在C#和Java之中使用方式看似相同,实际上却有着本质上的分歧。C#里面的泛型无论是在程序源码,编译后期还是运行期CLR中,都是切实存在的,List与List就是两个不同的类型,他们在运行期生成,有自己的虚方法表和类型数据。
Java语言的泛型规则不一样,他只在程序源码中存在,在编译后的字节码文件中就不存在List和List了,他们就是同一个类。

上面这段代码是不能被编译的,因为List和List编译之后都被擦除了。变成了一样的原生类型List.
JAVA虚拟机(九)泛型与泛型擦除
最新推荐文章于 2025-04-09 08:28:07 发布
本文探讨了C#与Java中泛型技术的本质差异。C#中的泛型在编译和运行期间都保持类型信息,而Java的泛型仅在源码阶段存在,编译后会被擦除为原生类型,导致运行时无法区分不同泛型实例。
722

被折叠的 条评论
为什么被折叠?



