亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java泛型 <T> T、 T、<T>的用法小結(jié)

 更新時(shí)間:2023年12月24日 09:40:27   作者:凡客丶  
T在Java泛型中,被稱(chēng)作類(lèi)型變量, 有的方法返回值是<T> T,有的是T,區(qū)別在哪里,本文主要介紹了Java泛型 <T> T、 T、<T>的用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解下

我們聊聊Java泛型中的 T 是什么?

T 在Java泛型中,被稱(chēng)作類(lèi)型變量。那么什么又是類(lèi)型變量?

類(lèi)型變量在整個(gè)類(lèi)的定義中用于指定方法的返回類(lèi)型,同時(shí)也可以指定字段和局部變量的類(lèi)型,我們可以用具體的類(lèi)型來(lái)替換類(lèi)型變量來(lái)實(shí)例化泛型類(lèi)型。

如果我們經(jīng)常看源碼,就能看到很多類(lèi)似于T這種類(lèi)型變量,簡(jiǎn)單介紹一下這些類(lèi)型變量分別代表什么含義。

  • Ⅰ、T、U、S:表示任意類(lèi)型
  • Ⅱ、K:表示鍵類(lèi)型
  • Ⅲ、V:表示值類(lèi)型
  • Ⅳ、E:表示集合元素類(lèi)型
  • Ⅴ、N:表示數(shù)字類(lèi)型

了解完這些類(lèi)型變量的含義后,我們回歸正傳, <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];
    }
}

上面的樣例測(cè)試中,我分別編寫(xiě)了兩個(gè)類(lèi) Generic01 和 Generic02。Generic01類(lèi) 編寫(xiě)的方法的返回值樣式為 <T> T,Generic02類(lèi) 編寫(xiě)的方法返回值的樣式為 T。在編寫(xiě)的時(shí)候發(fā)現(xiàn),如果方法的返回值寫(xiě)成 T,那么這個(gè)類(lèi)必須為泛型,簡(jiǎn)單來(lái)說(shuō)就是 Generic02類(lèi) 后面必須加上 <T>,否則會(huì)報(bào)錯(cuò)!

報(bào)錯(cuò)如下

在這里插入圖片描述

Generic02類(lèi)加上<T>后,那么我們?cè)谕ㄟ^(guò)此類(lèi)調(diào)用方法時(shí),就必須傳入類(lèi)型,比如Integer、Double、String、我們自定義的類(lèi)等等一些類(lèi),而方法返回為 <T> T 的 Generic01類(lèi) 則無(wú)需知道類(lèi)型,傳入即可~

在這里插入圖片描述

談?wù)撏闓eneric01和Generic02后,我們來(lái)說(shuō)說(shuō)Generic03是什么含義?

Generic03方法
public <T> 中的這個(gè) T 是修飾符的功能,代表是個(gè)泛型方法,與static修飾靜態(tài)方法一個(gè)意思,但是,這里的<T>并不是返回值類(lèi)型,而是表示這里傳入的參數(shù)可以是泛型或者下面定義的變量可以是泛型,<T>在這里的目的是為了確保參數(shù)中可以出現(xiàn)T這種數(shù)據(jù)類(lèi)型或者方法中定義的變量可以是T這種數(shù)據(jù)類(lèi)型。

總結(jié) T、 <T>、<T> T

T 代表只能傳入 T 類(lèi)型的數(shù)據(jù),也就是說(shuō),方法實(shí)例化的數(shù)據(jù)類(lèi)型,就是 T 的數(shù)據(jù)類(lèi)型。( 根據(jù)上面的代碼理解也就是,如果Generic02,那么就限制 T 為 Double 類(lèi)型。)

<T> 代表
表示修飾符的含義,代表這是一個(gè)泛型方法。作用是:可以傳入的參數(shù)為 T 這種類(lèi)型變量

<T> T 代表
① 第一個(gè) <T> 表示泛型 ② 第二個(gè) T 表示返回的是 T 類(lèi)型的數(shù)據(jù)(比如:Integer、Double、String 等等)③ 第三個(gè) T 來(lái)限制傳入的數(shù)據(jù)類(lèi)型(比如:限制為數(shù)組、集合 等等)

到此這篇關(guān)于Java泛型 <T> T、 T、<T>的用法小結(jié)的文章就介紹到這了,更多相關(guān)Java泛型 <T> T、 T、<T>內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用IO流實(shí)現(xiàn)音頻的剪切和拼接

    Java使用IO流實(shí)現(xiàn)音頻的剪切和拼接

    這篇文章主要為大家詳細(xì)介紹了Java使用IO流實(shí)現(xiàn)音頻的剪切和拼接,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • java基于jdbc連接mysql數(shù)據(jù)庫(kù)功能實(shí)例詳解

    java基于jdbc連接mysql數(shù)據(jù)庫(kù)功能實(shí)例詳解

    這篇文章主要介紹了java基于jdbc連接mysql數(shù)據(jù)庫(kù)功能,結(jié)合實(shí)例形式詳細(xì)分析了jdbc連接mysql數(shù)據(jù)庫(kù)的原理、步驟、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java中數(shù)組的創(chuàng)建與傳參方法(學(xué)習(xí)小結(jié))

    Java中數(shù)組的創(chuàng)建與傳參方法(學(xué)習(xí)小結(jié))

    這篇文章主要介紹了Java中數(shù)組的創(chuàng)建與傳參方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • Java實(shí)現(xiàn)修改圖片文件名的方法示例

    Java實(shí)現(xiàn)修改圖片文件名的方法示例

    在很多應(yīng)用中,用戶(hù)需要對(duì)文件進(jìn)行重命名操作,包括圖片文件,圖片文件的重命名操作可以是基于文件內(nèi)容、日期、用戶(hù)輸入等,本項(xiàng)目的目標(biāo)是實(shí)現(xiàn)一個(gè)Java程序,能夠修改圖片文件的文件名,并進(jìn)行簡(jiǎn)單的文件名處理,需要的朋友可以參考下
    2025-02-02
  • 簡(jiǎn)單理解java泛型的本質(zhì)(非類(lèi)型擦除)

    簡(jiǎn)單理解java泛型的本質(zhì)(非類(lèi)型擦除)

    泛型在java中有很重要的地位,在面向?qū)ο缶幊碳案鞣N設(shè)計(jì)模式中有非常廣泛的應(yīng)用。泛型是參數(shù)化類(lèi)型的應(yīng)用,操作的數(shù)據(jù)類(lèi)型不限定于特定類(lèi)型,可以根據(jù)實(shí)際需要設(shè)置不同的數(shù)據(jù)類(lèi)型,以實(shí)現(xiàn)代碼復(fù)用。下面小編來(lái)簡(jiǎn)單講一講泛型
    2019-05-05
  • JVM 命令行工具的使用

    JVM 命令行工具的使用

    造成Java應(yīng)用出現(xiàn)性能問(wèn)題的因素非常多,想要定位這些問(wèn)題,一款優(yōu)秀的性能診斷工具必不可少,本文主要介紹了JVM 命令行工具的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 詳解多云架構(gòu)下的JAVA微服務(wù)技術(shù)解析

    詳解多云架構(gòu)下的JAVA微服務(wù)技術(shù)解析

    本文介紹了基于開(kāi)源自建和適配云廠商開(kāi)發(fā)框架兩種構(gòu)建多云架構(gòu)的思路,以及這些思路的優(yōu)缺點(diǎn)
    2021-05-05
  • MyBatis異常java.sql.SQLSyntaxErrorException的問(wèn)題解決

    MyBatis異常java.sql.SQLSyntaxErrorException的問(wèn)題解決

    使用mybatis插入數(shù)據(jù)時(shí)出現(xiàn)java.sql.SQLSyntaxErrorException異常,本文就來(lái)介紹一下MyBatis異常的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • SpringBoot自定義starter方式

    SpringBoot自定義starter方式

    本文介紹了如何創(chuàng)建一個(gè)自定義的Spring Boot Starter,以實(shí)現(xiàn)日志功能,通過(guò)使用SPI機(jī)制,可以在不修改啟動(dòng)類(lèi)的情況下,實(shí)現(xiàn)自動(dòng)配置和功能導(dǎo)入,同時(shí),還討論了如何在自定義Starter中編寫(xiě)必要的配置文件和注解,以確保功能的正確實(shí)現(xiàn)和配置的智能提示
    2025-02-02
  • Java枚舉(enum) 詳解7種常見(jiàn)的用法

    Java枚舉(enum) 詳解7種常見(jiàn)的用法

    這篇文章主要介紹了Java枚舉(enum) 詳解7種常見(jiàn)的用法,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-11-11

最新評(píng)論