摘要:知識點總結反射反射操作泛型知識點總結反射采用泛型擦除的機制來引入泛型。中的泛型僅僅是給編譯器使用的,確保數據的安全性和免去強制類型轉換的麻煩。
Java知識點總結(反射-反射操作泛型)
@(Java知識點總結)[Java, 反射]
Java采用泛型擦除的機制來引入泛型。Java中的泛型僅僅是給編譯器javac使用的, 確保數據的安全性和免去強制類型轉換的麻煩 。但是,__一旦編譯完成,所有的和泛型有關的類型全部擦除__。
為了通過反射操作這些類型以迎合實際開發的需要,Java就新增了ParameterizedType,GenericArrayType,TypeVariable 和WildcardType幾種類型來代表不能被歸一到Class類中的類型但是又和原始類型齊名的類型。
ParameterizedType: 表示一種參數化的類型,比如Collection
GenericArrayType: 表示一種元素類型是參數化類型或者類型變量的數組類型
TypeVariable: 是各種類型變量的公共父接口
WildcardType: 代表一種通配符類型表達
示例:
import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; import java.util.Map; public class Test06 { public void t1(Mapmap , List list){ System.out.println("t1"); } // 獲得指定方法,參數的泛型信息 private static void test1() { try { Method m = Test06.class.getMethod("t1", Map.class,List.class); Type[] types = m.getGenericParameterTypes(); for (Type paramType : types) { System.out.println("#"+paramType); if (paramType instanceof ParameterizedType) { Type[] genericTypes = ((ParameterizedType)paramType).getActualTypeArguments(); for (Type genericType : genericTypes) { System.out.println("————參數泛型類型:"+genericType); } } } } catch (Exception e) { e.printStackTrace(); } } public Map t2(){ System.out.println("t2"); return null; } // 獲取指定方法返回值泛型信息 private static void test2() { try { Method m = Test06.class.getMethod("t2", null); Type returnType = m.getGenericReturnType(); if (returnType instanceof ParameterizedType) { Type[] genericTypes = ((ParameterizedType)returnType).getActualTypeArguments(); for (Type genericType : genericTypes) { System.out.println("返回值泛型類型:"+genericType); } } } catch (NoSuchMethodException | SecurityException e) { e.printStackTrace(); } } public static void main(String[] args) { test1(); System.out.println("-------------"); test2(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71597.html
摘要:哪吒社區技能樹打卡打卡貼函數式接口簡介領域優質創作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現在公司的現狀是碼農太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區Java技能樹打卡?【打卡貼 day2...
摘要:通過反射獲取無參構造方法并使用得到無參構造方法獲取所有的修飾的構造方法。如果方法沒有返回值,返回的是反射獲取空參數成員方法并運行代碼演示反射獲取成員方法并運行獲取對象中的成員方法獲取的是文件中的所有公共成員方法包括繼承的類是描述 01類加載器 * A.類的加載 當程序要使用某個類時,如果該類還未被加載到內存中,則系統會通過加載,連接,初始化三步來實現對這個類進行初始化。 ? ...
摘要:第章元編程與注解反射反射是在運行時獲取類的函數方法屬性父類接口注解元數據泛型信息等類的內部信息的機制。本章介紹中的注解與反射編程的相關內容。元編程本質上是一種對源代碼本身進行高層次抽象的編碼技術。反射是促進元編程的一種很有價值的語言特性。 第12章 元編程與注解、反射 反射(Reflection)是在運行時獲取類的函數(方法)、屬性、父類、接口、注解元數據、泛型信息等類的內部信息的機...
摘要:知識點總結反射介紹知識點總結反射反射程序在運行狀態中,可以動態加載一個只有名稱的類動態調用類的所有屬性和方法加載完類之后,在堆內存中,就產生了一個類型的對象一個類只有一個對象。 Java知識點總結(反射-介紹) @(Java知識點總結)[Java, 反射] 反射 程序在 運行狀態中 ,可以動態加載一個只有名稱的類 (動態調用類的所有屬性和方法)Class c = Class.for...
閱讀 1298·2021-11-16 11:44
閱讀 3766·2021-10-09 10:01
閱讀 1750·2021-09-24 10:31
閱讀 3845·2021-09-04 16:41
閱讀 2517·2021-08-09 13:45
閱讀 1216·2019-08-30 14:08
閱讀 1779·2019-08-29 18:32
閱讀 1644·2019-08-26 12:12