类型擦除和桥接方法

St.*_*rio 1 java compiler-construction generics bridge

请考虑以下代码:

List<Integer>ints= new ArrayList<Integer>();
lst.add(new Object());//no suitable method found for add(Object)...
Run Code Online (Sandbox Code Playgroud)

为什么会出现此错误?在编译时我们有类型擦除,boolean add (E e)擦除后的方法将有签名add(Object o).你能否详细说明ompiler在这种情况下的工作原理?

那么桥接方法呢?据我所知,bridge metod具有以下功能:

boolean add(Object o){return this.add((Integer) o)}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 7

在编译器执行类型检查发生类型擦除.如果是相反的方式,那么仿制药就没有意义了!