Java泛型中E、T、K、V等的含義

E - Element (在集合中使用,因?yàn)榧现写娣诺氖窃?

T - Type(Java 類)

K - Key(鍵)

V - Value(值)

N - Number(數(shù)值類型)

? - 表示不確定的java類型

S、U、V - 2nd、3rd、4th types

至于代表若干類的,放在尖括號(hào)內(nèi)的 通配符 ?:<?>,還分 上限通配符 (Upper Bounded Wildcards) 和 下限通配符 (Lower Bounded Wildcards)。

上限通配符 <? extends U> 可以代表這個(gè)未知類型 U,或者 通過(guò)關(guān)鍵字 extends 所能想象出的 U 類的任何一個(gè)子類。同樣,下限通配符 <? super L> 可以代表這個(gè)未知類型 L,或者 通過(guò)關(guān)鍵字 super 所能想象出的 L類的任何一個(gè)超類。

這里分別以多個(gè)接口 interface 和 多個(gè)類 class 為基礎(chǔ), 創(chuàng)建 繼承關(guān)系。

并以通過(guò)編譯的代碼, 證明以上論點(diǎn)成立。

public class UP_Interface { 

public static void main(String args[]){ 
/********************************************
 * 此處 extends 表示 有上界的統(tǒng)配符 ?,上界為  C2
 * 由此定義的引用 listUpper可以作為 
 * 接下來(lái)的 7 種 子泛型類型的 ArrayList 的引用來(lái)使用。 
 **********************************************/
List<? extends C2> listUpper;//上界統(tǒng)配符 ?, 上界為  C2
listUpper=new ArrayList<C2>();//能存儲(chǔ) C2 D1 D2 E1 E2 E3 E4
listUpper=new ArrayList<D1>();//能存儲(chǔ)    D1    E1 E2  
listUpper=new ArrayList<D2>();//能存儲(chǔ)       D2       E3 E4
listUpper=new ArrayList<E1>();//能存儲(chǔ)          E1             
listUpper=new ArrayList<E2>();//能存儲(chǔ)             E2             
listUpper=new ArrayList<E3>();//能存儲(chǔ)                E3             
listUpper=new ArrayList<E4>();//能存儲(chǔ)                E4
                     
/*************************************************
 * super 表示有下界的統(tǒng)配符 ? ,下界為  C2 , 
 * 由此定義的引用 listLower 可以作為 
 * 接下來(lái)的 7 種 子泛型類型的 ArrayList 的引用來(lái)使用。  
 ***************************************************/
List<? super C2> listLower;
listLower=new ArrayList<A1>(); //能存儲(chǔ) A1          B1 B2       C1 C2    D1 D2 E1 E2 E3 E4
listLower=new ArrayList<A2>(); //能存儲(chǔ)    A2          B2       C1 C2    D1 D2 E1 E2 E3 E4
listLower=new ArrayList<A3>(); //能存儲(chǔ)       A3          B3       C2 C3 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<A4>(); //能存儲(chǔ)          A4       B3 B4    C2 C3 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<B2>(); //能存儲(chǔ)                B2       C1 C2    D1 D2 E1 E2 E3 E4
listLower=new ArrayList<B3>(); //能存儲(chǔ)                   B3       C2 C3 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<C2>();// 能存儲(chǔ)                            C2    D1 D2 E1 E2 E3 E4
    }

image.png

/********************************************
 * 此處 extends 表示 有上界的統(tǒng)配符 ?,上界為  C2
 * 由此定義的引用 listUpper可以作為 
 * 接下來(lái)的 7 種 子泛型類型的 ArrayList 的引用來(lái)使用。 
 **********************************************/
   List<? extends C2> listUpper;//統(tǒng)配符 ? 的上界為  C2
listUpper=new ArrayList<C2>();//能存儲(chǔ) C2 D2 E3 E4
listUpper=new ArrayList<D2>();//能存儲(chǔ) D2 E3 E4       
listUpper=new ArrayList<E3>();           
listUpper=new ArrayList<E4>();
/*************************************************
 * super 表示有下界的統(tǒng)配符 ? ,下界為  C2 , 
 * 由此定義的引用 listLower 可以作為 
 * 接下來(lái)的 7 種 子泛型類型的 ArrayList 的引用來(lái)使用。  
 ***************************************************/
List<? super C2> listLower;
listLower=new ArrayList<A1>(); //能存儲(chǔ) A1 B1 B2 C1 C2    D1 D2 E1 E2 E3 E4
listLower=new ArrayList<B2>(); //能存儲(chǔ) B2       C1 C2    D1 D2 E1 E2 E3 E4
listLower=new ArrayList<C2>();// 能存儲(chǔ) D2 E3 E4
    }
}
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容