1. 程式人生 > 實用技巧 >Java反射機制由哪些類實現?

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的示例 ,明天補充)