Java反射機制由哪些類實現?


  • 運行環境:

  JDK8 + IntelliJ IDEA 2018.3 


  • 源碼: 

    package com.ChenJiangT.Demo2;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.util.Arrays;
    
    public class Demo2 {
        public static void main(String[] args) {
           /* Field 類:代表類的成員變量(成員變量也稱為類的屬性)。
    
            Method類:代表類的方法。
    
            Modifier類:代表修飾符。
    
            Constructor 類:代表類的構造方法。*/
            Student student = new Student();
            Class claStu=student.getClass();
    
            Field cla1=null;
            try {
                cla1=claStu.getDeclaredField("name");
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
            System.out.println(cla1);
    
             Field[] cla2=claStu.getDeclaredFields();
            System.out.println(Arrays.toString(cla2));
    
            System.out.println("********************************************************************************************");
    
            //Method類:
            Method clazMe=null;
            try {
                 clazMe=claStu.getMethod("aa",String.class);//查找方法名是getName 並且c
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
            System.out.println(clazMe);
    
            Method[] clazMe2=claStu.getMethods(); //查找此類的所有公共的方法  包含父類的繼承來的方法
            System.out.println(Arrays.toString(clazMe2));
    
            Method[] clazMe4 = claStu.getDeclaredMethods();//查找此類的所有的方法  不包含父類的繼承來的方法
            System.out.println(Arrays.toString(clazMe4));
    
            System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    
            //Modifier類  getModifiers
            int claMod=claStu.getModifiers();
            System.out.println(claMod);
    
    
            //Constructor 類:代表類的構造方法   getConstructor  getConstructors  getDeclaredConstructors
            Constructor claCon1=null;
            try {
                 claCon1 = claStu.getConstructor(String.class);//查找參數是String 的構造方法
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
            System.out.println(claCon1);
            Constructor[] claCon2 = claStu.getConstructors();//查找此類的所有的構造方法
            System.out.println(Arrays.toString(claCon2));
    
            Constructor[] claCon3 = claStu.getDeclaredConstructors();//查找此類的所有的聲明的構造方法
            System.out.println(Arrays.toString(claCon3));
    
        }
    }

     

  • 效果圖:

 

 

 

 

 

 

總結:

    在JDK中,主要由以下類來實現Java反射機制,這些類都位於java.lang.reflect包中:

      1).Class類:代表一個類。

      2).Field 類:代表類的成員變量(成員變量也稱為類的屬性)。

      3).Method類:代表類的方法。

      4).Modifier類:代表修飾符。

      5).lConstructor 類:代表類的構造方法。

      6).Array類:提供了動態創建數組,以及訪問數組的元素的靜態方法。(以上文檔沒有Array的示例 ,明天補充)


免責聲明!

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



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