使用反射在Java 中獲取泛型參數類型
在Java 中,泛型類型是一個強大的功能,它允許更靈活和可重複使用的程式碼。然而,使用通用參數有時可能會很棘手。一個常見的挑戰是在運行時確定泛型參數的實際類型。
可能嗎?
是的,可以取得泛型參數的型別使用反射。反射提供了一種在執行時間存取和操作有關 Java 類別的結構、欄位和方法的詳細資訊的方法。
範例:
考慮以下程式碼片段:
public class Voodoo { public static void chill(List> aListWithTypeSpiderMan) { // Here I'd like to get the Class-Object 'SpiderMan' Class typeOfTheList = ???; } public static void main(String... args) { chill(new ArrayList<spiderman>()); } }</spiderman>
在 chill 方法中,我們有一個未知類型的清單。我們想要確定實際的類型參數,在本例中應該是 SpiderMan。
解決方案:
解決方案涉及使用 ParameterizedType 接口,它是一種類型描述參數化類型的類型,例如使用泛型的類型。以下是我們如何實現它:
Class typeOfTheList = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
這段程式碼取得目前類別的超類別(在本例中為 Voodoo),它應該是一個參數化類型,然後提取實際的類型參數。第一個類型參數對應於我們感興趣的類型參數,即 SpiderMan。
注意:
Java 16 之前不完全支援此技術。早期對泛型類型使用反射被認為是 hacky,但從 Java 16 開始,getActualTypeArguments() 已添加到 Type 介面中,提供了一種更乾淨、更簡化的方式存取通用類型資訊。
以上是如何使用反射來取得 Java 中的泛型參數類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用