5
是直接在這裏有一個例子:Java泛型:在ArrayList的(無界通配符類型),添加和方法的addAll行爲不同
ArrayList <?> x = new ArrayList();
ArrayList y = new ArrayList();
x.add("abc"); // Clause 1. Compilation error - No problemo. Understood.
x.addAll(y); // Clause 2. No compilation error
無界通配符,一個不能添加。爲什麼最後一條語句沒有編譯錯誤?
好的。我明白了意思。條款1將會失敗 - 因爲類型是已知的並且遵循無界通配符防止添加的一般規則。第2章,由於類型元素是未知的,它使用混合遺傳代碼和通用代碼的一般規則。我說得對嗎? – yapkm01
是的 - 在原始類型的情況下,所有的仿製藥都被丟棄。 – Bozho
@ yapkm01泛型在語言中加入較晚,因此必須設計爲允許與大量現有非泛型庫輕鬆交互,因此編譯器會忽略存在原始類型時的泛型。 – josefx