泛型,內部類

2021-10-25 10:40:29 字數 2348 閱讀 1928

對於泛型,不要求怎麼使用,要求看原始碼時能看懂就行。

泛型的意義:

1,自動進行型別的檢查

2,自動進行型別的轉換

泛型的一些重點

1,泛型時怎麼編譯的?擦除機制--object

2,泛型的型別 不參與型別的組成

3,泛型的引數不能是簡單型別

看乙個簡單的泛型示例:

class myarraylist

public void push(t val)

public t get()

}public class testdemo

}

然後是泛型類的上界是什麼?寫成靜態方法怎麼寫

class genericalg 

}return max;

}}//靜態方法:

class genericalg2

}return max;

}}public class testdemo2 ;

system.out.println(genericalg2.maxvalue(array));

system.out.println(genericalg2.maxvalue(array));

//不寫integer會根據實參型別判斷

}public static void main1(string args) ;

genericalggla = new genericalg<>();

system.out.println(gla.maxvalue(array));

genericalg2.maxvalue(array);

}}

萬用字元:?   (通常出現在原始碼中)看差別 萬用字元:原始碼當中

泛型的區別:

1,萬用字元一般用於讀取

2,萬用字元不僅有上界 <? extends 上界》   還有下界     <? super 下界》 

class myprint

}}class myprint2

}}

邊界問題

只接受 number 的子型別作為 e 的型別實參

沒有指定型別邊界 e,可以視為 e extends object

public class myarraylist

myarraylistl1; // 正常,因為 integer 是 number 的子型別

myarraylistl2; // 編譯錯誤,因為 string 不是 number 的子型別

父子型別:

<>裡面的東西不參與型別的組成,雖然object是number的父類,但在泛型上就不是了

需要使用萬用字元來確定,<?>會被擦除為

public class myarraylist

// myarraylist不是 myarraylist的父型別

// myarraylist也不是 myarraylist的父型別

// 需要使用萬用字元來確定父子型別

// myarraylist<?> 是 myarraylist<? extends number> 的父型別

// myarraylist<? extends number> 是 myarraylist的父型別

內部類:1,例項內部類 2,靜態內部類3,匿名內部類 4,本地內部類

1,例項內部類

例項資料成員是什麼?普通的成員屬性不加static
如何拿到乙個例項內部類物件?

不能在例項內部類當中定義乙個靜態變數,

class outerclass 

}}//怎麼去拿到實力內部類的乙個物件

public class testdemo

}

2,靜態內部類

class outerclass 

public void test()

}}

3.匿名內部類

class outclass 

}public class testdemo

}.test();

}}

4.本地內部類:沒人寫

class outclass 

}public class testdemo

}}

內部類和泛型

內部類就是在類中的類。在原始碼中經常看到,但是原始碼中常見的都是靜態內部類,最常見的型別就是資料型別a.資料型別b,也就是a.b 這種型別。1 threadlocal.threadlocalmap 2 map中的各種靜態結構等等 3 獲取得到單例物件在以前學習j a的時候,我們通常喜歡在乙個類外面定...

C 泛型內部原理

泛型相當於c 的模板 泛型方法 static void fly t i,k t 泛型委託 delegate void mydelegate t1 t1,t2 t2 net中的func 泛型 eventhandler 委託事件 泛型約束 約束父類或者介面 aaawhere t idbconnectio...

內部類 成員內部類 區域性內部類 匿名內部類

public class 外部類 private int num 0 外部類如果要訪問內部類的成員,則需要通過內部類的物件訪問 使用方式 1.外部類使用內部類,主函式再使用外部類 2.通過new的方式 外部類.內部類 物件名 new 外部類 new 內部類 定義在方法內部的類,就是區域性內部類,只有...