如何獲取Java集合中泛型的Class對象
獲取Java集合中泛型的Class對象
直接獲取時(shí)獲取不到的,類型被虛擬機(jī)擦除了
- 泛型的正常工作是依賴編譯器在編譯源碼的時(shí)候,先進(jìn)行類型檢查,然后進(jìn)行類型擦除并且在類型參數(shù)出現(xiàn)的地方插入強(qiáng)制轉(zhuǎn)換的相關(guān)指令實(shí)現(xiàn)的。編譯器在編譯時(shí)擦除了所有類型相關(guān)的信息,所以在運(yùn)行時(shí)不存在任何類型相關(guān)的信息。例如List在運(yùn)行時(shí)僅用一個(gè)List類型來表示。為什么要進(jìn)行擦除呢?這是為了避免類型膨脹。
利用子類實(shí)現(xiàn)父類的泛型是可以的
如何才能獲取到泛型的類型
- 必須具有真實(shí)類型的存在
- 泛型的類型是明確的如 (List <User> 是明確的,List<T> 是不明確的)
嘗試
如果直接使用getClass等方法,會出現(xiàn)下面的情況

這個(gè)是獲取不到類型的
但是換成下面的方式,便可以獲?。菏褂孟逻呥@組大括號,這一點(diǎn)非常重要

換一種類型,一樣的情況

所以,可以通過上面的方式去獲取類型

上面的這種方法的思路為:利用子類實(shí)現(xiàn)父類的泛型是可以的
通過獲取第一個(gè)元素去判斷當(dāng)前屬于哪一種類型即可
很多情況下,按下面的思路去操作即可
public static void main(String[] args) {
List<String> strs = new ArrayList<>();
strs.add("xxx");
List<Integer> ins = new ArrayList<>();
ins.add(1);
List<Boolean> boos = new ArrayList<>();
boos.add(true);
List<Long> lons = new ArrayList<>();
lons.add(null);
System.out.println(((List<?>)strs).get(0) instanceof String);//true
System.out.println(((List<?>)ins).get(0) instanceof String);//false
System.out.println(((List<?>)boos).get(0) instanceof Boolean);//true
System.out.println(((List<?>)lons).get(0) instanceof Long);//false
}其他的直接去判斷,通過查找并嘗試,沒有找到符合我要求的,怎么通過上面的方法去暫時(shí)實(shí)現(xiàn)了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot調(diào)用DeepSeek接口的實(shí)現(xiàn)
本文主要介紹了SpringBoot調(diào)用DeepSeek接口的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
一文帶你掌握J(rèn)ava如何自動化生成目錄結(jié)構(gòu)文檔
這篇文章主要為大家詳細(xì)介紹了Java如何自動化生成目錄結(jié)構(gòu)文檔,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-01-01
使用Java輕松判斷一個(gè)5位數(shù)是否為回文數(shù)
在編程中,回文數(shù)是一個(gè)正讀和反讀都相同的數(shù)字,本文將介紹如何使用Java編寫一個(gè)程序來判斷一個(gè)5位數(shù)是否為回文數(shù),感興趣的小伙伴可以了解下2026-03-03
Java讀取resources目錄下文件路徑的九種代碼示例教程
在Java開發(fā)中經(jīng)常需要讀取項(xiàng)目中resources目錄下的文件或獲取資源路徑,這篇文章主要給大家介紹了關(guān)于Java讀取resources目錄下文件路徑的九種代碼示例教程,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
java解析XML Node與Element的區(qū)別(推薦)
下面小編就為大家分享一篇java解析XML Node與Element的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01

