Posted on 2011-06-05 16:51
xcp 閱讀(312)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
review
1。由來(lái)
ByteFoo->private Byte foo;
StringFoo->private String foo;
BooleanFoo->private boolean foo;
DateFoo->private Date foo;
XcpFoo->private xcp foo;
2。1.4以前的解決方案
ObjectFoo->private Object foo; //容易出現(xiàn)ClassCastException,類(lèi)型轉(zhuǎn)換錯(cuò)誤
3。1.5新特性的解決方案-范型
public Class MyFoo<T>{
private T foo;
}
4。擴(kuò)展
public Class MyFoo<T>{
private T[] foos; //等等
}
5.再度擴(kuò)展-限制范型使用類(lèi)型
public Class MyFoo<T extends List>{ //不管是繼承父類(lèi)與實(shí)現(xiàn)接口都用extends
private T foo;
}
6.再度擴(kuò)展-類(lèi)型通配聲明-->使用時(shí)的通用方法
public Class MyFoo<T extends List>{
private T foo;
public static void main(String args[]){
MyFoo<ArrayList> foo1 = new MyFoo<ArrayList>();
MyFoo<LinkedList> foo2 = new MyFoo<LinkedList>();
//現(xiàn)在我想聲明一個(gè)變量,即可以放ArrayList,也可以放LinkedList
MyFoo<? extends List> foo3 =null; //list的子類(lèi)
foo3 = new MyFoo<ArrayList>();
foo3 = new MyFoo<LinkedList();
MyFoo<? super List> foo4 =null; //list的父類(lèi)
foo4 = new MyFoo<Object>(); //這就只能為Object了,因?yàn)長(zhǎng)ist的超父類(lèi)有Object
MyFoo<?> foo5 = null; //任意類(lèi)型== ? extends Object
foo5 = new MyFoo<Integer>();
foo5 = new MyFoo<String>();
}
}
名稱(chēng): ?4C.ESL | .↗Evon
口號(hào): 遇到新問(wèn)題?先要尋找一個(gè)方案乄而不是創(chuàng)造一個(gè)方案こ
mail: 聯(lián)系我