?# 第四章第三節--2 使用泛型
標簽(空格分隔): 廖雪峰
---
## 泛型使用對比
1. 不使用泛型
`list`的接口變為`Object`類型.
使用`void add(Object)`
和 `Object get(int)`
編譯器會發出警告.
在輸出的時候無法判斷`Object`具體類型.

2. 使用泛型.
定義泛型`<String> list`的接口變為強類型`String`
`void add(String)`
`String get(int)`
輸出則直接按照`String`輸出.

3. 自定義對象使用泛型
定義泛型`<Number> list`的接口變為強類型`Number`
`void add(Number)`
`Number get(int)`
輸出則直接按照`Number`輸出.

**注意:使用泛型的時候,可以忽略編譯器可以直接推斷出來的類型**
```java
List<Number>list = new ArrayList<>();//后面的類型便可省略
```
在Arrays的sort方法中可以通過泛型來實現自定義數據類型的排序.
對于一般數據類型如下:

對于自定義數據.

## 小節小結
- 使用泛型的時候,把泛型參數`<T>`替換成需要的`class`類型.
- 可以省略編譯器能自動推斷出來的類型`List<String>list = new ArrayList<>()`;
- 不指定泛型參數類型的時候,編譯器會給出警告,且只能將<T>視為Object類型.
- 前言
- 一:Java快速入門
- 二:Java面向對象編程
- 三:Java異常處理
- 錯誤處理
- Java的異常
- 捕獲異常
- 拋出異常
- 自定義異常
- 斷言和日志
- 使用斷言
- 使用JDK Logging
- 使用Commons Logging
- 使用Log4j
- 四:Java反射與泛型
- 反射
- Class類
- 訪問字段
- 調用方法
- 調用構造方法
- 獲取繼承關系
- 注解
- 使用注解
- 定義注解
- 處理注解
- 泛型
- 什么是泛型
- 使用泛型
- 編寫泛型
- 擦拭法
- extends通配符
- super通配符
- 泛型和反射
- 五:Java集合
- Java集合簡介
- Java集合簡介
- List
- 使用List
- 編寫equals方法
- Map
- Set
- Queue
- Stack
- 最佳實踐
- 六:Java IO編程
- 七:Java處理日期和時間
- 八:JUnit單元測試
- 九:Java正則表達式
- 十:Java加密與安全
- 十一:Java多線程編程
- 十二:Maven基礎
- 十三:Java網絡編程
- 十四:Java操作XML和JSON
- 十五:Java JDBC編程
- 十六:Java函數式編程