2015年11月5日 星期四

泛型中的<? super T> <? extends T> 是什麼意思

這裡不在多做解釋泛型了

? 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)

沒有留言:

張貼留言