二、反射的使用

一、為什么要學(xué)反射?反射是什么?反射的使用場景?

  • 當(dāng)編寫工具類需要傳入一個未知類型對象時,操作不了該對象。不過可以獲取該對象的字節(jié)碼對象,通過字節(jié)碼對象可以操作該對象,而通過字節(jié)碼對象操作對象的過程就是反射

  • 反射:通過類的字節(jié)碼對象操作類的對象過程

  • 使用場景

    • 需要操作未知類型的對象時需要用到反射

二、說說使用反射的基本過程

  • 獲取類的字節(jié)碼對象

  • 通過字節(jié)碼對象獲取類的構(gòu)造方法

  • 通過類的構(gòu)造方法創(chuàng)建類的對象

  • 通過反射的相關(guān)方法操作該對象

三、獲取字節(jié)碼對象的方式有哪些?

  • 對象.getClass();

  • 數(shù)據(jù)類型.class;

  • Class.forName(類的全限定名);該方式最常用

四、反射的常用方法有哪些?

  • 獲取類的構(gòu)造方法

    • 公共無參構(gòu)造器:getConstructor();
    • 公共有參構(gòu)造器:getConstructor(參數(shù)類型);
    • 所有公共構(gòu)造器:getConstructors();
    • 公共/私有無參構(gòu)造器:getDeclaredConstructor();
    • 公共/私有有參構(gòu)造器:getDeclaredConstructor(參數(shù)類型);
    • 所有構(gòu)造器(公共、私有、無參、有參):getDeclaredConstructors();
  • 獲取類的方法

    • 公共無參成員方法:getMethod(方法名);
    • 公共有參成員方法:getMethod(方法名,參數(shù)類型);
    • 所有公共成員方法(子類、父類):getMethods();
    • 公共/私有無參成員方法:getDeclaredMethod(方法名);
    • 公共/私有有參成員方法:getDeclaredMethod(方法名,參數(shù)類型);
    • 所有成員方法(不包含父類成員方法):getDeclaredMethods();
  • 獲取類的字段

    • 公共字段:getField(字段名);
    • 所有公共字段:getFields();
    • 公共/私有字段:getDeclaredField(字段名);
    • 所有字段(公共、私有):getDeclaredFields();
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 內(nèi)容 1 獲取接口類型值2 修改接口類型值3 反射調(diào)用函數(shù)4 反射調(diào)用方法5 reflect包api使用 先回顧一...
    chase_lwf閱讀 480評論 0 0
  • java反射是什么 其實就是動態(tài)的從內(nèi)存加載一個指定的類,并獲取該類中的所有的內(nèi)容。 反射的好處:大大的增強了程序...
    之后_90閱讀 954評論 0 1
  • 10.反射 反射就是通過操作字節(jié)碼文件來做兩件事 創(chuàng)建對象 調(diào)用方法 對比硬編碼效率會低一些,但是代碼的靈活性大大...
    ADMAS閱讀 183評論 0 0
  • 概念 得到類的元數(shù)據(jù)的過程,即在運行時期動態(tài)地獲取某個類的成員信息(構(gòu)造類、方法、字段、內(nèi)部類、接口、父類等),反...
    dawsonenjoy閱讀 284評論 0 0
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點、注意力、語言聯(lián)想、情景聯(lián)想 觀點: 1.統(tǒng)計學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會...
    Jenaral閱讀 5,952評論 0 5

友情鏈接更多精彩內(nèi)容