Java泛型 <T> T、 T、<T>的用法小結
我們聊聊Java泛型中的 T 是什么?
T 在Java泛型中,被稱作類型變量。那么什么又是類型變量?
類型變量在整個類的定義中用于指定方法的返回類型,同時也可以指定字段和局部變量的類型,我們可以用具體的類型來替換類型變量來實例化泛型類型。
如果我們經(jīng)常看源碼,就能看到很多類似于T這種類型變量,簡單介紹一下這些類型變量分別代表什么含義。
- Ⅰ、T、U、S:表示任意類型
- Ⅱ、K:表示鍵類型
- Ⅲ、V:表示值類型
- Ⅳ、E:表示集合元素類型
- Ⅴ、N:表示數(shù)字類型
了解完這些類型變量的含義后,我們回歸正傳, <T> T 、T、<T> 到底在用法上有什么區(qū)別?
樣例代碼
public class GenericMethod {
public static void main(String[] args) {
Double[] num = {1.11, 2.22, 3.33, 4.44, 5.55, 6.66};
String[] str = {"Hello", "World", "你好", "世界"};
Generic01 generic01 = new Generic01();
generic01.toGeneric01(num);
generic01.toGeneric01(str);
Generic02<Double> doubleGeneric02 = new Generic02<>();
doubleGeneric02.toGeneric02(num);
Generic02<String> doubleGeneric03 = new Generic02<>();
doubleGeneric03.toGeneric02(str);
}
}
class Generic01 {
public <T> T toGeneric01(T[] arr) {
return arr[arr.length - 1];
}
}
class Generic02<T> {
public T toGeneric02(T[] arr) {
return arr[arr.length - 1];
}
}
class Generic03 {
public <T> void toGeneric03(T[] arr) {
T t = arr[arr.length - 1];
}
}
上面的樣例測試中,我分別編寫了兩個類 Generic01 和 Generic02。Generic01類 編寫的方法的返回值樣式為 <T> T,Generic02類 編寫的方法返回值的樣式為 T。在編寫的時候發(fā)現(xiàn),如果方法的返回值寫成 T,那么這個類必須為泛型,簡單來說就是 Generic02類 后面必須加上 <T>,否則會報錯!
報錯如下

Generic02類加上<T>后,那么我們在通過此類調(diào)用方法時,就必須傳入類型,比如Integer、Double、String、我們自定義的類等等一些類,而方法返回為 <T> T 的 Generic01類 則無需知道類型,傳入即可~

談論完Generic01和Generic02后,我們來說說Generic03是什么含義?
Generic03方法
public <T> 中的這個 T 是修飾符的功能,代表是個泛型方法,與static修飾靜態(tài)方法一個意思,但是,這里的<T>并不是返回值類型,而是表示這里傳入的參數(shù)可以是泛型或者下面定義的變量可以是泛型,<T>在這里的目的是為了確保參數(shù)中可以出現(xiàn)T這種數(shù)據(jù)類型或者方法中定義的變量可以是T這種數(shù)據(jù)類型。
總結 T、 <T>、<T> T
T 代表只能傳入 T 類型的數(shù)據(jù),也就是說,方法實例化的數(shù)據(jù)類型,就是 T 的數(shù)據(jù)類型。( 根據(jù)上面的代碼理解也就是,如果Generic02,那么就限制 T 為 Double 類型。)
<T> 代表
表示修飾符的含義,代表這是一個泛型方法。作用是:可以傳入的參數(shù)為 T 這種類型變量
<T> T 代表
① 第一個 <T> 表示泛型 ② 第二個 T 表示返回的是 T 類型的數(shù)據(jù)(比如:Integer、Double、String 等等)③ 第三個 T 來限制傳入的數(shù)據(jù)類型(比如:限制為數(shù)組、集合 等等)
到此這篇關于Java泛型 <T> T、 T、<T>的用法小結的文章就介紹到這了,更多相關Java泛型 <T> T、 T、<T>內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java基于jdbc連接mysql數(shù)據(jù)庫功能實例詳解
這篇文章主要介紹了java基于jdbc連接mysql數(shù)據(jù)庫功能,結合實例形式詳細分析了jdbc連接mysql數(shù)據(jù)庫的原理、步驟、實現(xiàn)方法及相關操作技巧,需要的朋友可以參考下2017-10-10
Java中數(shù)組的創(chuàng)建與傳參方法(學習小結)
這篇文章主要介紹了Java中數(shù)組的創(chuàng)建與傳參方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
MyBatis異常java.sql.SQLSyntaxErrorException的問題解決
使用mybatis插入數(shù)據(jù)時出現(xiàn)java.sql.SQLSyntaxErrorException異常,本文就來介紹一下MyBatis異常的問題解決,具有一定的參考價值,感興趣的可以了解一下2023-08-08

