短短几句话,说清楚java泛型的本质
| Java
评论 0 | 点赞 0 | 浏览 268

泛型一直是C# 用户攻击java语言的常用武器之一。
java中的泛型与C# 中的泛型不同,java中的泛型是“类型擦除式”,而C# 泛型则是“具现化式”。
C# 中的List<int>List<string>是两个不同的类型;
而java中,ArrayList<Integer>ArrayList<String>则是同一种类型,因为java代码在编译过后,泛型全部变成裸类型(Raw Type类型),在访问元素的时候,通过Object到具体类型的强制类型转换实现,这就是类型擦除。而由于int这样的基本类型无法与Object之间进行强制转换,因此,java泛型不支持基本类型。
举例,下图所示的代码编译出错,它不属于方法的重载,因为ArrayList<Integer>ArrayList<String>编译过后是同一种类型——ArrayList裸类型(Raw Type类型)

本文作者:不是好驴
本文链接:https://www.baddonkey.cn/detail/12
版权声明:原创文章,允许转载,转载请注明出处

高谈阔论

留言列表