簡體   English   中英

下界通配符方法

[英]Lower bounded wildcard method

任何人都可以讓我理解為什么這段代碼會出現編譯器錯誤:

List<? super A> superList = new ArrayList<>();
superList.add(new Object());

雖然這是完全正確的:

setSuper(new ArrayList<Object>());

public void superMethod(List<? super A> list) {
    //...
}

我知道下限將可用類型縮小到 A 或其后代,但是為什么在方法參數方面這對編譯器來說很好?

ArrayList<Object>List<? super A> List<? super A>

ArrayList<A>也是List<? super A> List<? super A>

但是您不能將new Object()添加到ArrayList<A> 所以不是所有的List<? super A> List<? super A> values 可以添加一個對象,所以編譯器正確出錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM