欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Java和C#的泛型比较_Java和C#的泛型有什么区别

程序员文章站 2022-01-22 07:09:27
...

C#的泛型:


C#泛型类在编译时,先生成中间代码IL,通用类型T只是一个占位符

在实例化类时,根据用户指定的数据类型代替T并由即时编译器(JIT)生成本地代码

这个本地代码中已经使用了实际的数据类型,等同于用实际类型写的类

所以不同的封闭类的本地代码是不一样的

按照这个原理,我们可以这样认为:


泛型类的不同的封闭类是分别不同的数据类型



java的泛型


对java虚拟机来说是没有泛型类的

java编译器在编译泛型类是会用泛型类的左边第一个限定类去替换

eg: ArrayList<T extend a & b>

编译后ArrayList的所以T会被a 去替换

但put数据是、编译器会检查put的数据是不是a类型的

但get数据时、他会返回a类型的数据.并添加类型转换代码(这样效率就低了)

eg: ArrayList<News> arrayList=new ...; arrayList.get(0);

编译器会返回 a类型的数据、然后把 数据转换成News数据

总之java没有泛型类、在编译后都是基本的类型、并加类类型转换