首先是一个知乎问题:
最近看到有人说,List
之后在工作上也遇到了 Map<Stirng, Object>
这种写法。
什么是泛型
编译期的类型检查机制。不允许再写出这种代码:
List list = new ArrayList(); |
但由于类型擦除,运行时并没有类型检查,所以 List<Integer>
和 List<String>
在运行时是一样的。
并不是引入泛型就能避免所有的类型转换异常。理解这一点就理解了工程中需要注意点所在。
// 用原始类型数组(合法,但会有 unchecked 警告) |
有些说法表示类型擦除和值类别的缺失是缺陷也是区别于cpp的特点。那我问你(
实际工作缺失不乏能跑就别动的场景。突然想到自己值类别那篇blog即没讲清楚又啰嗦还没讲完,有空重写吧。
这玩意儿也挺有意思的,需求赶得着急/代码要求不能太膨胀用用是很方便,但是瞎鸡儿一通写上环境又动不动oom,罪魁祸首肯定不是它,但它培养了写代码的人对性能不敏感的氛围。