泛型是為編譯器用的
例如arraylistcollection = new arraylist();
collection.add("abb");//編譯器會報錯
//通過反射
collection.getclass().getmethod("add",object.class).invoke(collection,"sd");
因為編譯器編譯後會去掉泛型,所以在記憶體中不存在泛型
collectionc = new vector();警告
collectionc= new vector();警告
collectionc = new vector();錯誤
collectionc = new vector();錯誤
表示任意型別
publicstatic void printcollection(collection<?> cols)
publicstatic void printcollection(collectioncols)
使用?萬用字元可以引用其他各種引數化的型別,?萬用字元的作用主要用作引用
,可以呼叫與引數化無關的方法,不能呼叫與引數化有關的方法
限定vector<?extendsnumber> x = new vector();//正確,必須是number的子類或者本身
vector<?extendsnumber> x = new vector< string >();//錯誤
vector<?superinteger> x = new vector();//正確,必須是integer的父類或者本身
vector<?superinteger> x = new vector();//錯誤
a<?>= new a();可以,反過來不可以
編譯器不允許建立型別變數的陣列
vectorlist = new vector[10];//錯誤
hashmapmap = new hashmap)();
map.add("sd",1);
map.add("s",3);
map.add("sdd",4);
set>entryset = map.entryset();
for(map.entryentry:entryset)
泛型先定義後使用
publicstatic void swap(t a ,int i,int j)
swap(newstring("s","s"),0,1);//正確
swap(newint,2,3);//錯誤,因為基本資料型別不能作為t實際型別
privatestatic tconvertobj(object obj)
privatestatic void arr(t a,t v) }
privatestatic void printcollection(collectioncols,t t)
privatestatic void copydata(t arr,collectioncols) }
publicclss dao
publicvoid delete(t t){}
publicvoid update(t t){}
publicsetfindbyconditions(string where)
publicstatic void update(t t){}//出錯,靜態不能用類泛型,除非單獨定義泛型因為靜態方法單獨存在}
可以保證t是同一種型別,因為是在類上定義的
如果是publicvoid delete(t t){}
publicvoid udpate(t t){}
則就不能保證是同乙個型別
daoda = new dao();
vectorv ;無法通過v本身來得到
可以把v放在乙個方法裡
publicstatic void main()
Java反射 方法的反射 深入了解泛型
invoke 物件,引數列表 1 獲得類型別 class data a.getclass 2 獲得方法 getmethod 方法名 可變引數 class 獲得自身和繼承的public方法 getdeclaredmethod 方法名 可變引數 class 獲得自身的所有方法,不包括繼承的方法 meth...
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...