在看到类型擦除的时候,有点疑惑。
举个例子:
ArrayList<String> arrayList=new ArrayList<String>();
arrayList.add("123")//这个地方必须是字符串
为什么不可以是其他类型,不是说在编译的时候类型擦除了吗,那么,它的原始类型应该为Object,那么为什么add方法的参数不可以是其他的类型?
举个例子:
ArrayList<String> arrayList=new ArrayList<String>();
arrayList.add("123")//这个地方必须是字符串
为什么不可以是其他类型,不是说在编译的时候类型擦除了吗,那么,它的原始类型应该为Object,那么为什么add方法的参数不可以是其他的类型?
arrayList.add(123); 这个是可以执行的
但是在从arrayList中取这个值的时候会有错误 因此我觉着也是跟上面那哥们说的一样
先检查编译是否有错在执行
是不是这样的
array instanceof ArrayList<?>
肯定也是类型擦除之后,不能使用ArrayList<String> 、ArrayList<Integer>这样的写法。
这个是在运行时检查的,。所以采用特出的写法
ArrayList<String> arrayList=new ArrayList<String>();编译时即指定了arrayList的类型是ArrayList<String>,list中存储的元素类型是String,因此放入其他非String类型的数据时会报编译错误。运行时arrayList的类型变成原生态类型ArrayList。