集合框架-引入泛型
2:泛型(掌握)
(1)泛型概述
是一種把明確型別的工作推遲到建立物件或者呼叫方法的時候才去明確的特殊的型別。
(2)格式:
<資料型別>
注意:該資料型別只能是引用型別。
(3)好處:
A:把執行時期的問題提前到了編譯期間
B:避免了強制型別轉換
C:優化了程式設計,解決了黃色警告線問題,讓程式更安全
(4)泛型的前世今生
A:泛型的由來
Object型別作為任意型別的時候,在向下轉型的時候,會隱含一個轉型問題
B:泛型類
把泛型定義在類上
格式:public class 類名<泛型類1,...>
注意:泛型型別必須是引用型別
C:泛型方法
把泛型定義在方法上
格式:public <泛型型別> 返回型別 方法名(泛型型別...)
D:泛型介面
把泛型定義在介面上
格式:public interface 介面名<泛型型別1...>
E:泛型高階萬用字元
?
? extends E
? super E
package cn.itcast_01;
import java.util.ArrayList;
import java.util.Iterator;
/*
* ArrayList儲存字串並遍歷
*
* 我們按照正常的寫法來寫這個程式, 結果卻出錯了。
* 為什麼呢?
* 因為我們開始儲存的時候,儲存了String和Integer兩種型別的資料。
* 而在遍歷的時候,我們把它們都當作String型別處理的,做了轉換,所以就報錯了。
* 但是呢,它在編譯期間卻沒有告訴我們。
* 所以,我就覺得這個設計的不好。
* 回想一下,我們的陣列
* String[] strArray = new String[3];
* strArray[0] = "hello";
* strArray[1] = "world";
* strArray[2] = 10;
* 集合也模仿著陣列的這種做法,在建立物件的時候明確元素的資料型別。這樣就不會在有問題了。
* 而這種技術被稱為:泛型。
*
* 泛型:是一種把型別明確的工作推遲到建立物件或者呼叫方法的時候才去明確的特殊的型別。引數化型別,把型別當作引數一樣的傳遞。
* 格式:
* <資料型別>
* 此處的資料型別只能是引用型別。
* 好處:
* A:把執行時期的問題提前到了編譯期間
* B:避免了強制型別轉換
* C:優化了程式設計,解決了黃色警告線
*/
public class GenericDemo {
public static void main(String[] args) {
// 建立
ArrayList<String> array = new ArrayList<String>();
// 新增元素
array.add("hello");
array.add("world");
array.add("java");
// array.add(new Integer(100));
//array.add(10); // JDK5以後的自動裝箱
// 等價於:array.add(Integer.valueOf(10));
// 遍歷
Iterator<String> it = array.iterator();
while (it.hasNext()) {
// ClassCastException
// String s = (String) it.next();
//加了泛型後不需要強制型別轉換了
String s = it.next();
System.out.println(s);
}
// 看下面這個程式碼
// String[] strArray = new String[3];
// strArray[0] = "hello";
// strArray[1] = "world";
// strArray[2] = 10;
}
}
相關文章
- 集合框架-通過Object轉型問題引入泛型框架Object泛型
- 集合框架-泛型類的概述及使用框架泛型
- 集合框架-泛型方法的概述和使用框架泛型
- 集合框架-泛型介面的概述和使用框架泛型
- 集合框架-泛型高階之萬用字元框架泛型字元
- 泛型集合 list泛型
- 泛型集合 Queue泛型
- Java:Collection集合、泛型Java泛型
- Java集合和泛型Java泛型
- c#泛型集合C#泛型
- 07.集合和泛型泛型
- C# 泛型集合SortedListC#泛型
- 泛型方法、初始集合和集合的遍歷泛型
- Java 集合列舉泛型(一)Java泛型
- ajax 提交陣列 泛型集合陣列泛型
- 【ITOO】--陣列、集合、泛型解析陣列泛型
- Day22 集合,ArrayList,泛型泛型
- 集合框架-ArrayList儲存字串、自定義物件並遍歷泛型版框架字串物件泛型
- Java反射給泛型集合賦值Java反射泛型賦值
- DataTable轉換list泛型集合(反射)泛型反射
- C# 泛型集合的自定義型別排序C#泛型型別排序
- Java入門教程十二(集合與泛型)Java泛型
- Golang引入泛型:Go將Interface{}替換為“Any”Golang泛型
- DataSet與泛型集合間的互相轉換泛型
- 8.集合、泛型、列舉、註解、反射泛型反射
- C#中將DataTable型別轉化為泛型集合C#型別泛型
- C#中的介面和泛型集合探討C#泛型
- Java進階學習之集合與泛型(1)Java泛型
- Java集合 Collection、Set、Map、泛型 簡要筆記Java泛型筆記
- Java泛型知識點:泛型類、泛型介面和泛型方法Java泛型
- 泛型類、泛型方法及泛型應用泛型
- 物件導向基礎(2)--抽象類 介面 集合 泛型物件抽象泛型
- 泛型類和泛型方法泛型
- 【java】【泛型】泛型geneticJava泛型
- java泛型之泛型方法。Java泛型
- 泛型--泛型萬用字元和泛型的上下限泛型字元
- Java中如何使用泛型實現介面中的列表集合?Java泛型
- TypeScript 泛型介面和泛型類TypeScript泛型