0
在以下(简化)代码中,编译器在add方法中发出大喊(无法应用),正如Jon Skeet's answer中的解释。有没有一种干净的方式将我的扩展类分配到泛型数组?如何将扩展对象传递给泛型数组?
class a {}
class b extends a {}
ArrayList<? extends a> arr;
void f() {
arr.add(new b());
}
在以下(简化)代码中,编译器在add方法中发出大喊(无法应用),正如Jon Skeet's answer中的解释。有没有一种干净的方式将我的扩展类分配到泛型数组?如何将扩展对象传递给泛型数组?
class a {}
class b extends a {}
ArrayList<? extends a> arr;
void f() {
arr.add(new b());
}
a1
类型应为ArrayList<? extends a> a1;
不是你写的方式。你可能意指'列表',这将允许你添加一个'b'。 –
最终抛弃了泛型,并使用ArrayList arr;编译器只会给出一个警告,可能会被@SuppressWarnings(“unchecked”)压制。 – jazzgil
这是一个非常可怕的想法。学习如何正确处理泛型要比完全放弃类型安全更好。 –