泛型中? super T和? extends T的理解

? super T 代表T本身和T的父類

? extends T 代表T本身和T的子類

這個玩意有什麼用呢,起到限定作用,比如你要實現一個list集合拷貝的方法,即Collect.copy(listD,listS);

如果不加任何限制,那麼任何類型的兩個List都能進行拷貝肯定是不正確的,因爲裏面的字段千差萬別。

假設ListD代表目的集合   listS代表源集合 請問哪個代表? super T  哪個代表? extends T

按照正常思維思考一下  源集合肯定是來者不拒  越多越好 能拷貝的字段越多越好 因此對源集合不做限制

不做限制的話肯定選 ? extends T 啊 因爲子類既擁有父類 又能自己額外添加東西。

目的集合爲了起到這個拷貝方法的限制性,需要用? super T 這樣拷貝的時候才能真正拷貝到想要的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章