搜尋
首頁Javajava教程Java泛型通配符extends與super

Java泛型通配符extends與super

Dec 19, 2016 pm 03:57 PM
泛型

Java 泛型

關鍵字說明

? 通配符類型

extends T> 表示類型的上界,表示參數化類型的可能是T 或是T的子類別

super T> 表示類型下界(Java Core中稱為超型別限定),表示參數化型別是此型別的超型別(父型別),直到Object

extends 範例

static class Food{class}
static class Fruit extends Food{}
static class}
static class Fruit extends Food{}
static class}
static class Fruit extends Food{}
static class} Apple extends Fruit{}
static class RedApple extends Apple{}

List extends Fruit> flist = new ArrayList();
// complie error:
// flist.add(new Apple());
// flist.add(new Fruit());

// flist.add(new Object());

flist.add(null); // only work for null



List extends Frut>表示“具有任何從Fruit繼承類型的清單”,編譯器無法確定List所持有的類型,所以無法安全的向其中新增物件。可以加null,因為null 可以表示任何類型。所以List 的add 方法不能加入任何有意義的元素,但可以接受現有的子型別List 賦值。

Fruit fruit = flist.get(0);

Apple apple = (Apple)flist.get(0);



由於,其中放置是從Fruit中繼承的類型,所以可以安全地取出Fruit類型。

flist.contains(new Fruit());

flist.contains(new Apple());

在使用Collection中的contains 方法時,接受Object 參數類型,可以不涉及任何通配符,編譯器也允許這麼調用。

super 範例

List super Fruit> flist = new ArrayList();
flist.add(new Fruit());
flist.add(new Apple());
flist.add(new RedApple());

// compile error:

List super Fruit> flist = new ArrayList();



List super Fruit> 表示“具有任何Fruit超類型的列表”,列表的類型至少是一個Fruit 類型,因此可以安全的向其中添加Fruit 及其子類型。由於List super Fruit>中的類型可能是任何Fruit 的超類型,無法賦值為Fruit的子類型Apple的List.

// compile error:

Fruit item = flist.get(0);

因為,List super Fruit>中的類型可能是任何Fruit 的超類型,所以編譯器無法確定get回傳的物件類型是Fruit,還是Fruit的父類Food 或Object.

小結

extends可用於的回傳類型限定,不能用於參數類型限定。

super 可用於參數類型限定,不能用於傳回型別限定。
>帶有super超類型限定的通配符可以向泛型對易用寫入,並且帶有extends子類型限定的通配符可以向泛型物件讀取。


🎜🎜🎜更多Java泛型通配符extends與super相關文章請關注PHP中文網! 🎜
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。