Java通配符捕获 void m1(列表){ list.add(list.get(0)); } 作废m2(列表

Java通配符捕获 void m1(列表){ list.add(list.get(0)); } 作废m2(列表,java,Java,因为您不能在具有上限的类型列表中添加iten!您可以有一个或多个列表,其中一个不适合另一个进行修改操作 <T extends Number> void m1(List<T> list) { list.add(list.get(0)); } void m2(List<? extends Number> list) { list.add(list.get(0)); } ListTypeErasure…“在编译时是有意义的”,但为什么方法m2

因为您不能在具有上限的类型列表中添加iten!您可以有一个或多个列表,其中一个不适合另一个进行修改操作

<T extends Number> void m1(List<T> list) {
    list.add(list.get(0)); 
}

void m2(List<? extends Number> list) {
    list.add(list.get(0)); 
}

ListTypeErasure…“在编译时是有意义的”,但为什么方法m2是编译错误,而不是运行时错误?
List<? extends Number> list = new ArrayList<Integer>();
List<? extends Number> list = new ArrayList<Double>();
List<? extends Number> list = new ArrayList<Long>();