詳解Java常用工具類—泛型
一、泛型概述
1、背景
在Java中增加泛型之前,泛型程序設計使用繼承來實現(xiàn)的。
壞處:
需要進行強制類型轉換
可向集合中添加任意類型的對象,存在風險
2、泛型的使用
List<String> list=new ArrayList<String>();
3、多態(tài)與泛型
class Animal{}
class Cat extends Animal{}
List<Animal> list=new ArrayList<Cat>(); //這是不允許的,變量聲明的類型必須匹配傳遞給實際對象的類型。
其它錯誤的例子:
List<Object> list=new ArrayList<String>(); List<Number> number=new ArrayList<Integer>();
4、泛型內(nèi)容
- 泛型作為方法參數(shù)
- 自定義泛型類
- 自定義泛型方法
二、泛型作為方法參數(shù)
泛型作為參數(shù)時,如果參數(shù)為多個子類,可以使用(List<? extends 父類> xxx)。這種情況下,在調(diào)用方法時,就可以傳遞父類及其子類作為參數(shù)了。
還有一個:(List<? super 類> xxx)。這種情況下是指類及其超類(父類)。
三、自定義泛型
public class NumGeneric<T> {
private T num;
public NumGeneric() {
}
public NumGeneric(T num) {
this.setNum(num);
}
public T getNum() {
return num;
}
public void setNum(T num) {
this.num = num;
}
//測試
public static void main(String[] args) {
NumGeneric<Integer> intNum = new NumGeneric<>();
intNum.setNum(10);
System.out.println("Integer:" + intNum.getNum());
NumGeneric<Float> floatNum = new NumGeneric<>();
floatNum.setNum(5.0f);
System.out.println("Float:" + floatNum.getNum());
}
}
泛型類的定義和使用,可以傳進不同類的對象作為參數(shù)
四、自定義泛型方法
public <T extends Number> void printValue(T t) {
System.out.println(t);
}
注意:
- 泛型方法不一定在泛型類里面
- <T>必須寫在修飾符和返回值類型之間。
五、泛型總結
1、為什么使用泛型
不用進行強制類型轉換,避免運行時異常的安全隱患
2、變量聲明的類型必須匹配傳遞給實際對象的類型。
3、泛型作為方法參數(shù)
public void sellGoods(List<? extends Goods> goods)
表示可以是Goods及Goods類的子類作為泛型的參數(shù)類型,extends后面除了跟類的名字,還可以跟接口的名字。
4、public void sellGoods(List<? super Goods> goods)
表示可以是Goods類以及其超類作為泛型的參數(shù)類型
5、自定義泛型類
6、自定義泛型方法
以上所述是小編給大家介紹的Java常用工具類—泛型詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 深入淺析Java常用的格式化Json工具類
- Java常用工具類庫——Hutool的使用簡介
- Java常用工具類匯總 附示例代碼
- Java常用類庫Apache Commons工具類說明及使用實例詳解
- java常用工具類 Reflect反射工具類、String字符串工具類
- java常用工具類 Date日期、Mail郵件工具類
- java常用工具類 UUID、Map工具類
- java常用工具類 Random隨機數(shù)、MD5加密工具類
- java常用工具類 數(shù)字工具類
- java常用工具類 XML工具類、數(shù)據(jù)驗證工具類
- java常用工具類 IP、File文件工具類
- Java常用工具類—集合排序
- java處理字節(jié)的常用工具類
- java自定義封裝StringUtils常用工具類
- 常用java正則表達式的工具類
- Java語言Lang包下常用的工具類介紹
- Java_int、double型數(shù)組常用操作工具類(分享)
- Java常用工具類總結
相關文章
SpringBean和Controller實現(xiàn)動態(tài)注冊與注銷過程詳細講解
這篇文章主要介紹了SpringBean和Controller實現(xiàn)動態(tài)注冊與注銷過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-02-02
實現(xiàn)一個基于Servlet的hello world程序詳解步驟
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數(shù)據(jù)庫或應用程序之間的中間層2022-02-02
Java中PriorityQueue實現(xiàn)最小堆和最大堆的用法
很多時候都會遇到PriorityQueue,本文主要介紹了Java中PriorityQueue實現(xiàn)最小堆和最大堆的用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
Java反射根據(jù)不同方法名動態(tài)調(diào)用不同的方法(實例)
下面小編就為大家?guī)硪黄狫ava反射根據(jù)不同方法名動態(tài)調(diào)用不同的方法(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
SpringBoot集成JmsTemplate(隊列模式和主題模式)及xml和JavaConfig配置詳解
這篇文章主要介紹了SpringBoot集成JmsTemplate(隊列模式和主題模式)及xml和JavaConfig配置詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08

