摘要:有人問以下情況如何得到泛型參數的實際類型由于的類型擦除,沒有辦法獲取,不知道它被賦予了。但可以變通一下對應的類定義是這里知道了實際類型等基于的語言具有,能方便地獲取實際類型。
有人問以下情況如何得到泛型參數的實際類型:
APIService api = new APIService();
由于Java的類型擦除,沒有辦法獲取,APIService不知道它被賦予了User。
但可以變通一下:
APIService api = APIService.create(User.class);
對應的類定義是:
public class APIService{ public static APIService create(Class cls) { return new APIService(cls); } public APIService(Class cls) { //這里知道了實際類型cls } }
Kotlin, Scala等基于JVM的語言具有reified generics,能方便地獲取實際類型。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65085.html
摘要:泛型類在類的申明時指定參數,即構成了泛型類。換句話說,泛型類可以看成普通類的工廠。的作用就是指明泛型的具體類型,而類型的變量,可以用來創建泛型類的對象。只有聲明了的方法才是泛型方法,泛型類中的使用了泛型的成員方法并不是泛型方法。 什么是泛型? 泛型是JDK 1.5的一項新特性,它的本質是參數化類型(Parameterized Type)的應用,也就是說所操作的數據類型被指定為一個參數,...
摘要:接口也是集合中的一員,但它與接口有所不同,接口與接口主要用于存儲元素,而主要用于迭代訪問即遍歷中的元素,因此對象也被稱為迭代器。迭代器的實現原理我們在之前案例已經完成了遍歷集合的整個過程。 【Collection、泛型】 主要內容 Collection集合 迭代器 增強for 泛型 教學目標 [ ] 能夠說出集合與數組的區別 [ ] 說出Collection集合的常用功能 [ ]...
摘要:回到的第二方法的用法,通過上面的分析,我們可以知道,方法其實也是用來獲取泛型的實際類型的,這樣就可以將響應反序列化為帶泛型的類型了。在很多反序列化的開源組件中,都用了這個原理例如的方法,所以我們會經常見到實例化的時候會多個花括號。 前段日子在使用google-http-client.jar 這個組件做http請求時,發現一件有趣的事情,具體代碼如下: try { ...
摘要:靜態變量是被泛型類的所有實例所共享的。所以引用能完成泛型類型的檢查。對于這個類型系統,有如下的一些規則相同類型參數的泛型類的關系取決于泛型類自身的繼承體系結構。事實上,泛型類擴展都不合法。 前言 和C++以模板來實現靜多態不同,Java基于運行時支持選擇了泛型,兩者的實現原理大相庭徑。C++可以支持基本類型作為模板參數,Java卻只能接受類作為泛型參數;Java可以在泛型類的方法中取得...
閱讀 3333·2021-11-22 14:44
閱讀 2537·2019-08-30 14:10
閱讀 2588·2019-08-30 13:12
閱讀 1217·2019-08-29 18:36
閱讀 1341·2019-08-29 16:16
閱讀 3328·2019-08-26 10:33
閱讀 1761·2019-08-23 18:16
閱讀 379·2019-08-23 18:12