泛型相關筆記

2021-10-11 16:09:35 字數 912 閱讀 5021

泛型如果不指定,將被擦除,泛型對應的型別均按照object處理,但不等價 於object。經驗:泛型要使用一路都用。要不用,一路都不要用。

如果泛型結構是乙個介面或抽象類,則不可建立泛型類的物件。

jdk1.7,泛型的簡化操作:arraylist flist = new arraylist<>();

泛型的指定中不能使用基本資料型別,可以使用包裝類替換。

在類/介面上宣告的泛型,在本類或本介面中即代表某種型別,可以作為非靜態 屬性的型別、非靜態方法的引數型別、非靜態方法的返回值型別。但在靜態方法 中不能使用類的泛型。

異常類不能是泛型的

不能使用new e。但是可以:e elements = (e)new object[capacity]; 參考:arraylist原始碼中宣告:object elementdata,而非泛型引數型別陣列。

父類有泛型,子類可以選擇保留泛型也可以選擇指定泛型型別:

子類保留父類的泛型:泛型子類

結論:子類必須是「富二代」,子類除了指定或保留父類的泛型,還可以增加自己的泛型

萬用字元

讀取list的物件list中的元素時,永遠是安全的,因為不管list的真實型別 是什麼,它包含的都是object。

寫入list中的元素時,不行。因為我們不知道c的元素型別,我們不能向其中 新增物件。

將任意元素加入到其中不是型別安全的

唯一的例外的是null,它是所有型別的成員。

另一方面,我們可以呼叫get()方法並使用其返回值。返回值是乙個未知的型別,但是我們知道,它總是乙個object。

<?>允許所有泛型的引用呼叫

萬用字元指定上限 上限extends:使用時指定的型別必須是繼承某個類,或者實現某個介面,即<=

萬用字元指定下限 下限super:使用時指定的型別不能小於操作的類,即》=

舉例:

泛型筆記1

1.collectioncs 不是collectionco 的子型別 2.collection extends number 萬用字元上限是number add 方法受限,只能將number的子類物件加入collection get 方法的結果是number物件 任意number的子型別都可轉換成n...

C 筆記(泛型)

學習了型別,可以知道型別的實質是物件的模板,而泛型實質就是型別的模板 泛型允許宣告型別引數化的 即可以使用型別佔位符來定義泛型,然後在建立類的例項是指明真實的型別。c 提供五種泛型 前四種是型別,而方法是成員。建立和使用非泛型類有兩個步驟 而使用泛型這需要多乙個步驟,就是使用泛型構建實際的型別,構建...

java泛型筆記

泛型好處 提高安全性 將執行期的錯誤轉換到編譯期 省去強轉的麻煩 泛型基本使用 中放的必須是引用資料型別 泛型使用注意事項 前後的泛型必須一致,或者後面的泛型可以省略不寫 1.7的新特性菱形泛型 類內的方法最好與類的泛型一致,否則需要在方法上宣告該泛型 靜態方法必須宣告自己的泛型,它不能跟類的泛型是...