欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何獲取Java集合中泛型的Class對象

 更新時間:2025年06月21日 10:24:26   作者:?abc!  
這篇文章主要介紹了如何獲取Java集合中泛型的Class對象問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

獲取Java集合中泛型的Class對象

直接獲取時獲取不到的,類型被虛擬機擦除了

  • 泛型的正常工作是依賴編譯器在編譯源碼的時候,先進行類型檢查,然后進行類型擦除并且在類型參數(shù)出現(xiàn)的地方插入強制轉(zhuǎn)換的相關(guān)指令實現(xiàn)的。編譯器在編譯時擦除了所有類型相關(guān)的信息,所以在運行時不存在任何類型相關(guān)的信息。例如List在運行時僅用一個List類型來表示。為什么要進行擦除呢?這是為了避免類型膨脹。

利用子類實現(xiàn)父類的泛型是可以的

如何才能獲取到泛型的類型

  • 必須具有真實類型的存在
  • 泛型的類型是明確的如 (List <User> 是明確的,List<T> 是不明確的)

嘗試

如果直接使用getClass等方法,會出現(xiàn)下面的情況

這個是獲取不到類型的

但是換成下面的方式,便可以獲?。菏褂孟逻呥@組大括號,這一點非常重要

換一種類型,一樣的情況

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

上面的這種方法的思路為:利用子類實現(xiàn)父類的泛型是可以的

通過獲取第一個元素去判斷當(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

    }

其他的直接去判斷,通過查找并嘗試,沒有找到符合我要求的,怎么通過上面的方法去暫時實現(xiàn)了

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot如何添加全局異常捕獲類

    springboot如何添加全局異常捕獲類

    這篇文章主要介紹了springboot如何添加全局異常捕獲類,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • 整理很詳細的Java正則表達式使用大全

    整理很詳細的Java正則表達式使用大全

    這篇文章為大家整理了很詳細的Java正則表達式使用大全,大家在使用Java正則表達式的時候可查閱這篇文章,認為不錯的朋友可以收藏起來
    2015-12-12
  • Java中生成微信小程序太陽碼的實現(xiàn)方案

    Java中生成微信小程序太陽碼的實現(xiàn)方案

    這篇文章主要介紹了Java中生成微信小程序太陽碼的實現(xiàn)方案,本文講解了如何生成微信小程序太陽碼,通過微信提供的兩種方案都可以實現(xiàn),在實際的項目中建議采用第二種方案,需要的朋友可以參考下
    2022-05-05
  • 基于SpringBoot?Mock單元測試詳解

    基于SpringBoot?Mock單元測試詳解

    這篇文章主要介紹了基于SpringBoot?Mock單元測試詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Windows系統(tǒng)安裝JDK小結(jié)

    Windows系統(tǒng)安裝JDK小結(jié)

    這篇文章主要給大家詳細介紹了Windows系統(tǒng)安裝JDK的方法和步奏,十分的細致,有需要的小伙伴可以參考下
    2016-03-03
  • 關(guān)于java.util.Random的實現(xiàn)原理詳解

    關(guān)于java.util.Random的實現(xiàn)原理詳解

    Java實用工具類庫中的類java.util.Random提供了產(chǎn)生各種類型隨機數(shù)的方法,下面這篇文章主要給大家介紹了關(guān)于java.util.Random實現(xiàn)原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-08-08
  • JAVA線程池監(jiān)控以及動態(tài)調(diào)整示例詳解

    JAVA線程池監(jiān)控以及動態(tài)調(diào)整示例詳解

    這篇文章主要為大家介紹了JAVA線程池監(jiān)控以及動態(tài)調(diào)整示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 使用Spring Data Redis實現(xiàn)數(shù)據(jù)緩存的方法

    使用Spring Data Redis實現(xiàn)數(shù)據(jù)緩存的方法

    目前在系統(tǒng)架構(gòu)設(shè)計中使用Redis實現(xiàn)緩存,這篇文章主要介紹了使用Spring Data Redis實現(xiàn)數(shù)據(jù)緩存的方法,具有一定的參考價值,需要的朋友可以參考下
    2018-11-11
  • Spring?Initializr只能創(chuàng)建為Java?17版本以上的問題解決

    Spring?Initializr只能創(chuàng)建為Java?17版本以上的問題解決

    這篇文章主要給大家介紹了關(guān)于Spring?Initializr只能創(chuàng)建為Java?17版本以上問題的解決辦法,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • 全面了解servlet中cookie的使用方法

    全面了解servlet中cookie的使用方法

    下面小編就為大家?guī)硪黄媪私鈙ervlet中cookie的使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06

最新評論