E - Element (在集合中使用春寿,因?yàn)榧现写娣诺氖窃?
T - Type(Java 類)
K - Key(鍵)
V - Value(值)
N - Number(數(shù)值類型)
朗涩? - 表示不確定的java類型
S、U堂淡、V - 2nd馋缅、3rd、4th types
至于代表若干類的绢淀,放在尖括號內(nèi)的 通配符 萤悴?:<?>,還分 上限通配符 (Upper Bounded Wildcards) 和 下限通配符 (Lower Bounded Wildcards)皆的。
上限通配符 <? extends U> 可以代表這個(gè)未知類型 U覆履,或者 通過關(guān)鍵字 extends 所能想象出的 U 類的任何一個(gè)子類。同樣费薄,下限通配符 <? super L> 可以代表這個(gè)未知類型 L硝全,或者 通過關(guān)鍵字 super 所能想象出的 L類的任何一個(gè)超類。
這里分別以多個(gè)接口 interface 和 多個(gè)類 class 為基礎(chǔ)楞抡, 創(chuàng)建 繼承關(guān)系伟众。
并以通過編譯的代碼, 證明以上論點(diǎn)成立。
public class UP_Interface {
public static void main(String args[]){
/********************************************
* 此處 extends 表示 有上界的統(tǒng)配符 ?召廷,上界為 C2
* 由此定義的引用 listUpper可以作為
* 接下來的 7 種 子泛型類型的 ArrayList 的引用來使用凳厢。
**********************************************/
List<? extends C2> listUpper;//上界統(tǒng)配符 ?账胧, 上界為 C2
listUpper=new ArrayList<C2>();//能存儲 C2 D1 D2 E1 E2 E3 E4
listUpper=new ArrayList<D1>();//能存儲 D1 E1 E2
listUpper=new ArrayList<D2>();//能存儲 D2 E3 E4
listUpper=new ArrayList<E1>();//能存儲 E1
listUpper=new ArrayList<E2>();//能存儲 E2
listUpper=new ArrayList<E3>();//能存儲 E3
listUpper=new ArrayList<E4>();//能存儲 E4
/*************************************************
* super 表示有下界的統(tǒng)配符 ? ,下界為 C2 先紫,
* 由此定義的引用 listLower 可以作為
* 接下來的 7 種 子泛型類型的 ArrayList 的引用來使用治泥。
***************************************************/
List<? super C2> listLower;
listLower=new ArrayList<A1>(); //能存儲 A1 B1 B2 C1 C2 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<A2>(); //能存儲 A2 B2 C1 C2 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<A3>(); //能存儲 A3 B3 C2 C3 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<A4>(); //能存儲 A4 B3 B4 C2 C3 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<B2>(); //能存儲 B2 C1 C2 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<B3>(); //能存儲 B3 C2 C3 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<C2>();// 能存儲 C2 D1 D2 E1 E2 E3 E4
}
image.png
/********************************************
* 此處 extends 表示 有上界的統(tǒng)配符 ?,上界為 C2
* 由此定義的引用 listUpper可以作為
* 接下來的 7 種 子泛型類型的 ArrayList 的引用來使用遮精。
**********************************************/
List<? extends C2> listUpper;//統(tǒng)配符 ? 的上界為 C2
listUpper=new ArrayList<C2>();//能存儲 C2 D2 E3 E4
listUpper=new ArrayList<D2>();//能存儲 D2 E3 E4
listUpper=new ArrayList<E3>();
listUpper=new ArrayList<E4>();
/*************************************************
* super 表示有下界的統(tǒng)配符 ? 居夹,下界為 C2 ,
* 由此定義的引用 listLower 可以作為
* 接下來的 7 種 子泛型類型的 ArrayList 的引用來使用本冲。
***************************************************/
List<? super C2> listLower;
listLower=new ArrayList<A1>(); //能存儲 A1 B1 B2 C1 C2 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<B2>(); //能存儲 B2 C1 C2 D1 D2 E1 E2 E3 E4
listLower=new ArrayList<C2>();// 能存儲 D2 E3 E4
}
}
image.png