java反射原理及Class應用


反射:框架設計靈魂

  框架:半成品軟件,可以在框架基礎上進行軟件開發,簡化編碼

  反射:將類的各個組成部分封裝我其他對象,這就是反射機制

   好處:

     1.可以在程序運行過程中,操作這些對象

     2.可以解耦,提高程序的可擴展性

       獲取Class對象的方式:

       1.Class.forName(“全類名”);將字節碼文件加載進內存,返回Class對象 (多用於配置文件將類名定義在配置文件中,讀取文件加載類)

       2.類名.Class;通過類名的屬性.class獲取(多用於參數傳遞) 

       3.對象.getClass();getClass()方法在Object類中定義着( 多用於對象的獲取字節碼的一個方式)

     結論:

       同一個字節碼文件(*.class)在程序巡行的過程中,只會被加載一次,不論通過那一種方式獲取Class對象都是同一個。

      Class對象的功能:

     獲取功能:

         1.獲取成員變量們:

             Field[]getFields()  :獲取所有public修飾的成員變量

       Field getField(String name) : 獲取指定名稱的 public修飾的成員變量

          FieId[ ] getDeclaredFieIds()獲取所有成員變量,不考慮修飾符

          FileId getDeclaredFieId(String name);

       2.獲取構造方法們:

            Constructor<?>[ ] getConstructors()

            Constructor<T> getConstructor(類<?>… parameterTypes)

         Constructor<T> getDeclaredConstructor(類<?>… parameterTypes)

            Constructor<?>[ ] getDeclaredConstructors();

       3.獲取成員方法們

             Method[ ] getMethod()

          Method getMethod(String name,類<?>… parameterType)

             Method[ ] getDeclaredMethod()

           Method getDeclaredMethod(String name,類<?>… parameterType)

        4.獲取類名

        String getNmae();

         Field:成員變量

          操作:

           1.設置值

           void set(Object obj,Object value);

           2.獲取值

           get(Object obj)

           3.忽略訪問權限修飾符的安全檢查

           setAccessible(true):暴力反射

            Constructor:構造方法

           創建對象:        

           newInstance(Object… initargs)

   如果使用空參數構造方法創建對象,操作可以簡化Class對象的newInstance方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM