泛型类型擦除

281 阅读1分钟

泛型的类型参数在编译后会被擦除,对JVM来说List相当于List,最后都是作为Object去处理的。

通过反射获取List的方法列表可以看到:

所以即使定义List list = new ArrayList<>();
通过反射也可以添加任意类型的元素到数组中。
这边添加一个字符串到list中:

再查看集合的元素:

那么在取值的时候只能:Object a1 = list.get(1);

思考:

泛型是如何做到不需要我们自己再做类型转换的?