List<? extends Number>和List<? super Number>是Java泛型中的通配符類型涮俄,它們有一些區(qū)別。
List<? extends Number>表示一個元素類型為某種Number類型的列表尸闸,但是具體是哪種Number類型是不確定的彻亲。這意味著我們可以將該列表視為一個只讀的列表,我們可以從中讀取元素吮廉,但無法向其中添加元素苞尝,因為我們無法確定要添加的元素的具體類型是否符合限制。例如宦芦,我們無法向該列表中添加一個Integer類型的元素宙址,因為該列表可能實際上是一個Double類型的列表。
List<? super Number>表示一個元素類型為某種Number類型或Number的超類的列表调卑。這意味著我們可以將該列表視為一個只寫的列表抡砂,我們可以向其中添加元素,但無法從中讀取元素恬涧,因為我們無法確定從列表中讀取的元素的具體類型注益。例如,我們可以向該列表中添加一個Integer類型的元素溯捆,因為Integer是Number的子類丑搔,但我們無法從該列表中讀取元素并確保它是Integer類型。
因此提揍,List<? extends Number>類型的列表適用于只讀操作啤月,例如從中讀取元素并進行處理,而List<? super Number>類型的列表適用于只寫操作劳跃,例如向其中添加元素谎仲。在使用時,我們應(yīng)該根據(jù)具體的需求和使用場景來選擇使用哪種通配符類型刨仑。