程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 【Java基礎】反射機制

【Java基礎】反射機制

編輯:關於JAVA

【Java基礎】反射機制。本站提示廣大學習愛好者:(【Java基礎】反射機制)文章只能為提供參考,不一定能成為您想要的結果。以下是【Java基礎】反射機制正文


  1. 反射

    反射可以使我們很方便的創建靈活的代碼,這些代碼可以在運行時裝配,無需在組件之間進行源代碼鏈接。反射允許我們在編寫和執行時,使我們的代碼能夠接入裝載到JVM中的類的內部信息,而不是源代碼中選定的類協作的代碼。

  2. 反射機制作用

    1. 反編譯:.class -> .java
    2. 通過反射機制訪問Java對象的屬性,方法,構造方法
  3. 反射的使用

    1. 反射機制獲取類的三種方式
    Class c1 = Class.forName("com.webb.basis.reflect.Demo"); // 一般采用這種方式
    Class c2 = Demo.class;
    Class c3 = new Demo().getClass();
    1. 創建對象:獲取類之後我們來創建它的對象,利用newInstance()
    c1.newInstance(); // 調用了Demo的無參構造方法
    1. 獲取屬性
    // 獲取所有屬性
    Field[] fields = c1.getDeclaredFields();
    
    StringBuffer stringBuffer = new StringBuffer();
    
    stringBuffer.append(Modifier.toString(c1.getModifiers()) + " class " + c1.getSimpleName() + "{\n");
    
    for (Field field : fields) {
        stringBuffer.append("\t");
        stringBuffer.append(Modifier.toString(field.getModifiers()) + " ");
        stringBuffer.append(field.getType().getSimpleName() + " ");
        stringBuffer.append(field.getName() + ";\n");
    }
    
    stringBuffer.append("}");
    
    System.out.println(stringBuffer);
    
    // 獲取指定的屬性
    Field field = c1.getDeclaredField("name"); // 不存在的話會報錯    
    1. 獲取方法和構造方法
    方法關鍵字
    getDeclaredMethods()
    getReturnType()
    getParameterTypes()
    getDeclaredMethod()
    
    構造方法關鍵字
    getDeclaredConstructors()
    getDeclaredConstructor()
    1. setAccessible(true);

    對屬性設置訪問權限,當類中的變量為private時,必須設置此項。
    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved