? super T 代表T及其父類別
? extends T 代表T及其子類別
假設現在有一個Goblin類別繼承Monster類別
那麼你可以這樣實例化:
List<Goblin> goblinList1= new ArrayList<Goblin>(); List<Monster> goblinList2= new ArrayList<Monster>(); List<? super Goblin> goblinList3 = new ArrayList<Goblin>(); List<? super Goblin> goblinLis4 = new ArrayList<Monster>(); List<? super Goblin> goblinList5 = new ArrayList<Object>(); List<? extends Monster> goblinList6 = new ArrayList<Monster>(); List<? extends Monster> goblinList7 = new ArrayList<Goblin>();......
看一下Java SE8 中 Iterable<T> 介面新增的預設方法,就是這樣宣告的..
forEach(Consumer<? super T> action)
沒有留言:
張貼留言