国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java知識點總結(jié)(反射-反射操作泛型)

AprilJ / 3012人閱讀

摘要:知識點總結(jié)反射反射操作泛型知識點總結(jié)反射采用泛型擦除的機制來引入泛型。中的泛型僅僅是給編譯器使用的,確保數(shù)據(jù)的安全性和免去強制類型轉(zhuǎn)換的麻煩。

Java知識點總結(jié)(反射-反射操作泛型)

@(Java知識點總結(jié))[Java, 反射]

Java采用泛型擦除的機制來引入泛型。Java中的泛型僅僅是給編譯器javac使用的, 確保數(shù)據(jù)的安全性和免去強制類型轉(zhuǎn)換的麻煩 。但是,__一旦編譯完成,所有的和泛型有關(guān)的類型全部擦除__。

為了通過反射操作這些類型以迎合實際開發(fā)的需要,Java就新增了ParameterizedType,GenericArrayType,TypeVariable 和WildcardType幾種類型來代表不能被歸一到Class類中的類型但是又和原始類型齊名的類型。

ParameterizedType: 表示一種參數(shù)化的類型,比如Collection

GenericArrayType: 表示一種元素類型是參數(shù)化類型或者類型變量的數(shù)組類型

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(Map map , List list){
    System.out.println("t1");
  }
  
  // 獲得指定方法,參數(shù)的泛型信息
  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("————參數(shù)泛型類型:"+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();
  }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71597.html

相關(guān)文章

  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強)

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0
  • 1、類加載器 2、反射構(gòu)造方法 3、反射成員變量 4、反射成員方法 5、反射配置文件運行類中的方法

    摘要:通過反射獲取無參構(gòu)造方法并使用得到無參構(gòu)造方法獲取所有的修飾的構(gòu)造方法。如果方法沒有返回值,返回的是反射獲取空參數(shù)成員方法并運行代碼演示反射獲取成員方法并運行獲取對象中的成員方法獲取的是文件中的所有公共成員方法包括繼承的類是描述 01類加載器 * A.類的加載 當(dāng)程序要使用某個類時,如果該類還未被加載到內(nèi)存中,則系統(tǒng)會通過加載,連接,初始化三步來實現(xiàn)對這個類進行初始化。 ? ...

    Profeel 評論0 收藏0
  • 第12章 元編程與注解、反射 《Kotlin 項目實戰(zhàn)開發(fā)》

    摘要:第章元編程與注解反射反射是在運行時獲取類的函數(shù)方法屬性父類接口注解元數(shù)據(jù)泛型信息等類的內(nèi)部信息的機制。本章介紹中的注解與反射編程的相關(guān)內(nèi)容。元編程本質(zhì)上是一種對源代碼本身進行高層次抽象的編碼技術(shù)。反射是促進元編程的一種很有價值的語言特性。 第12章 元編程與注解、反射 反射(Reflection)是在運行時獲取類的函數(shù)(方法)、屬性、父類、接口、注解元數(shù)據(jù)、泛型信息等類的內(nèi)部信息的機...

    joyqi 評論0 收藏0
  • Java識點總結(jié)反射-介紹)

    摘要:知識點總結(jié)反射介紹知識點總結(jié)反射反射程序在運行狀態(tài)中,可以動態(tài)加載一個只有名稱的類動態(tài)調(diào)用類的所有屬性和方法加載完類之后,在堆內(nèi)存中,就產(chǎn)生了一個類型的對象一個類只有一個對象。 Java知識點總結(jié)(反射-介紹) @(Java知識點總結(jié))[Java, 反射] 反射 程序在 運行狀態(tài)中 ,可以動態(tài)加載一個只有名稱的類 (動態(tài)調(diào)用類的所有屬性和方法)Class c = Class.for...

    msup 評論0 收藏0
  • Java識點匯總

    摘要:由于類型擦除機制的存在,泛型類中的類型參數(shù)等信息,在運行時刻是不存在的。對此,對類文件的格式做了修訂,添加了屬性,用來包含不在類型系統(tǒng)中的類型信息。在運行時刻,會讀取屬性的內(nèi)容并提供給反射來使用。 OOP 對象的創(chuàng)建和拷貝 對象的初始化 多態(tài)的實現(xiàn) 內(nèi)部類、匿名類、靜態(tài)類 對象內(nèi)存模型 上面內(nèi)容均請參考以下文章: 談?wù)凧ava的面向?qū)ο?運行時 異常 聊聊Java的異常機制及實現(xiàn) ...

    Chao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<