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
這是一個非常可怕的想法。學習如何正確處理泛型要比完全放棄類型安全更好。 –