扫码关注官方订阅号
一直没搞懂泛型怎么实现
业精于勤,荒于嬉;行成于思,毁于随。
泛型就是一种语法糖,只在你写代码的时候方便编辑器纠错。举个例子,
List<Integer> list = new ArrayList<>(); //list.add("String"); //ERROR list.add(10); System.out.println(list.get(0));
上边被注释掉的就是错误的示例,编辑器会提醒你纠正错误。在经过java编译器编译成字节码后会自动去除掉泛型,同时在get方法前会强制转换为原先的类型。
如何证明以上说法?
public class Test{ public void change(List<Integer> list){} public void change(List<String> list){} }
上边这个代码就会被编译器报错,原因是List参数经过编译后类型都会被擦除,所以这两个方法的特征签名一模一样。
看看我这个问题吧,泛型不过就是类似于对具类型抽象而已。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
泛型就是一种语法糖,只在你写代码的时候方便编辑器纠错。
举个例子,
上边被注释掉的就是错误的示例,编辑器会提醒你纠正错误。
在经过java编译器编译成字节码后会自动去除掉泛型,同时在get方法前会强制转换为原先的类型。
如何证明以上说法?
上边这个代码就会被编译器报错,原因是List参数经过编译后类型都会被擦除,所以这两个方法的特征签名一模一样。
看看我这个问题吧,泛型不过就是类似于对具类型抽象而已。