前言
这是我之前在抖音二面的时候自我感觉没有答好的一题。因为我的中心只是围绕在了T
被Object
替换的问题上了,并没有去讲解他会带来的问题。
思维导图![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMDk1OTAwLTAzZTM0MmYzODhiMGM1NDAucG5n?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMDk1OTAwLTAzZTM0MmYzODhiMGM1NDAucG5n?x-oss-process=image/format,png)
什么是泛型擦除?
其实我们很常见这个问题,你甚至经常用,只是没有去注意罢了,但是很不碰巧这样的问题就容易被面试官抓住。下面先来看一段代码吧。
List list = new ArrayList();
List listString = new ArrayList<String>();
List listInteger = new ArrayList<Integer>();
这几段代码简单、粗暴、又带有很浓厚的熟悉感是吧。那我接下来要把一个数字1
插入到这三段不一样的代码中了。
作为读者的你可能现在已经黑人问号了????你肯定有很多疑问,这明显不一样啊,怎么可能。
public class Main {
public static void main(String[] args) {
List list = new ArrayList();
List listString = new ArrayList<String>();
List listInteger = new ArrayList<Integer>();
try {
list.getClass().getMethod("add", Object.class).invoke(list, 1);
listString.getClass().getMethod("add", Object.cl