讀書筆記 泛型深究

2021-08-28 23:40:35 字數 3242 閱讀 2606

listl1 = new arraylist();

listl2 = new arraylist();

system.out.println(l1.getclass() == l2.getclass());

public class test1

public t testmethod1(t t)

}

test1t = new test1();

t.testmethod("generic");//必須填字串

integer i = t.testmethod1(new integer(1));//字串 or 數字等 均可

public class test1

public e testmethod1(e e)

}

class base{}

class sub extends base{}

sub sub = new sub();

base base = sub;

listlsub = new arraylist<>();

listlbase = lsub;

public void testwildcards(collection<?> collection)
list<?> wildlist = new arraylist();

wildlist.add(123);// 編譯不通過

public void testsub(collection<? extends base> para)
para.add(new sub());// 編譯不通過

para.add(new base());// 編譯不通過

public void testsuper(collection<? super sub> para)
public void testsuper(collection<? super sub> para)
public void testwildcards(collection<?> collection){}
可以替換為

public void test(collectioncollection){}
public void test(collectioncollection)
public class test2
public void test(d d,s s)
public void test(t t,collection<? extends t> collection)
public t test1(t t)
listl1 = new arraylist();

listl2 = new arraylist();

system.out.println(l1.getclass() == l2.getclass());

public class erasure 

}

erasureerasure = new erasure("hello");

class eclz = erasure.getclass();

system.out.println("erasure class is:"+eclz.getname());

field fs = eclz.getdeclaredfields();

for ( field f:fs)

public class erasure 

}

public class erasure 

public void add(t object)

}

erasureerasure = new erasure("hello");

class eclz = erasure.getclass();

system.out.println("erasure class is:"+eclz.getname());

method methods = eclz.getdeclaredmethods();

for ( method m:methods )

listlist = new arraylist<>();

list.add(1);

list.add("test");//編譯不過

public inte***ce listextends collection
boolean add(object obj);
listlist = new arraylist<>();

list.add(1);

"test");//編譯不過

42.9f);//編譯不過

try catch (nosuchmethodexception e) catch (illegalacces***ception e) catch (invocationtargetexception e)

for(object o:list)

list li1 = new arraylist[10];//編譯不過,提示generic array creation

list li2 = new arraylist[10];//編譯不過,提示generic array creation

//替代方案 建立 arraylist>

//list li3 = new arraylist[10];//編譯通過why?

list<?> li3 = new arraylist<?>[10];

li3[1] = new arraylist();

list<?> v = li3[1];

讀書筆記 泛型有限萬用字元

傳送乙個子類物件給宣告了其父類型別的方法,是沒問題的 但是傳送乙個子類物件list給宣告了其父類型別list的方法,是不行的 這個時候,有限萬用字元就可以派上用場,在接受方法的宣告中 list o 123 4567 891011 1213 1415 1617 1819 123 4567 891011...

泛型程式設計與STL 讀書筆記

include stdafx.h include include include include include include using namespace std class even int tmain int argc,tchar argv include stdafx.h include...

Clr via C 讀書筆記 Cp12泛型

generic system.collections.generic 開放型別,封閉型別 每個封閉型別都有自己的靜態成員 新的型別派生自泛型型別派生的那個類 實參指定和派生層次沒有關係 使用using和區域性隱式型別來解決 了解就可以了 擁有泛型的那些好處 類似泛型介面 不變數 泛型型別引數不能更改...