? super T 代表T本身和T的父類
? extends T 代表T本身和T的子類
這個玩意有什麼用呢,起到限定作用,比如你要實現一個list集合拷貝的方法,即Collect.copy(listD,listS);
如果不加任何限制,那麼任何類型的兩個List都能進行拷貝肯定是不正確的,因爲裏面的字段千差萬別。
假設ListD代表目的集合 listS代表源集合 請問哪個代表? super T 哪個代表? extends T
按照正常思維思考一下 源集合肯定是來者不拒 越多越好 能拷貝的字段越多越好 因此對源集合不做限制
不做限制的話肯定選 ? extends T 啊 因爲子類既擁有父類 又能自己額外添加東西。
目的集合爲了起到這個拷貝方法的限制性,需要用? super T 這樣拷貝的時候才能真正拷貝到想要的。