首頁 > Java > java教程 > java泛型中的上界(extend)和下界(super)

java泛型中的上界(extend)和下界(super)

(*-*)浩
發布: 2019-08-22 15:54:34
轉載
3955 人瀏覽過

java泛型中的上界(extend)和下界(super)

泛型中上界與下界的定義

#上界

下界< ? super Apple>

上界與下界的特點

#上界的list只能get,不能add(確切地說不能add出除null之外的對象,包括Object)

下界的list只能add,不能get

import java.util.ArrayList;
import java.util.List;
 
class Fruit {}
class Apple extends Fruit {}
class Jonathan extends Apple {}
class Orange extends Fruit {}
 
public class CovariantArrays {
  public static void main(String[] args) {
	//上界
    List<? extends Fruit> flistTop = new ArrayList<Apple>();
    flistTop.add(null);
    //add Fruit对象会报错
    //flist.add(new Fruit());
    Fruit fruit1 = flistTop.get(0);
 
	//下界
    List<? super Apple> flistBottem = new ArrayList<Apple>();
    flistBottem.add(new Apple());
    flistBottem.add(new Jonathan());
    //get Apple对象会报错
    //Apple apple = flistBottem.get(0);
  }
}
登入後複製

這些特點的原因

上界

下界 ,表示Apple的所有父類,包括Fruit,一直可以追溯到老祖宗Object 。那麼當我add的時候,我不能add Apple的父類,因為不能確定List裡面存放的到底是哪個父類。但是我可以add Apple及其子類別。因為不管我的子類別是什麼類型,它都可以向上轉型為Apple及其所有的父類別甚至轉型為Object 。但是當我get的時候,Apple的父類別這麼多,我用什麼接著呢,除了Object,其他的都接不住。

所以,歸根結底可以用一句話表示,那就是編譯器可以支援向上轉型,但不支援向下轉型。具體來講,我可以把Apple物件賦值給Fruit的引用,但如果把Fruit物件賦值給Apple的引用就必須得用cast

以上是java泛型中的上界(extend)和下界(super)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板