擦除的核心动机是他使得泛化的客户端可以使用非泛化的类库用来使用,反之亦然,
因为java泛型不经支持向后兼容,并且现有的代码和类库也是合法的,保持其意义,要持之迁移兼容性,当某个类库变为泛型时,不会破坏依赖于他的代码,解决这个问题,java设计者利用了擦除。
在java泛型代码编译中,例如
ArrayList<Date> list=new ArrayList<Date>();
list.add(new Date());
Date myDate=list.get(0);
编译器在擦除之后get方法中并没有强转,get的依然是object类型,而是在最后的引用中强转。