首頁> Java> java教程> 主體

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

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

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 flistTop = new ArrayList(); flistTop.add(null); //add Fruit对象会报错 //flist.add(new Fruit()); Fruit fruit1 = flistTop.get(0); //下界 List flistBottem = new ArrayList(); 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
作者最新文章
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!