java反射總結

open代碼123 9年前發布 | 19K 次閱讀 Java反射 Java開發

        JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這種動態獲取的以及動態調用對象的方法的功能稱為java語言的反射機制。
        Java反射機制主要提供了以下功能:在運行時判定任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判定任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。

反射常用的API,代碼中總結:
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class ReflectDemo2 {

/** 
 * @author YCY 
 */  
public static void main(String[] args) {  
    Class testClass;  
    try {  
        // 拿到Test字節碼文件  
        testClass = Class.forName("com.java.Test");  
        // 獲取Test包  
        Package p = testClass.getPackage();  
        // 創建Test對象  
        Test test1 = (Test) testClass.newInstance();  
        // 調用Test對象中的public方法  
        test1.method1();  
        test1.method3(1, '你');  
        // 獲取Test全部的構造方法  
        Constructor<?> cons[] = testClass.getConstructors();  
        // 遍歷數組,打印出Test所有的構造方法  
        for (int i = 0; i < cons.length; i++) {  
            System.out.println(cons[i]);  
        }  
        // 通過有參構造方法創建Test對象  
        Test test2 = (Test) cons[0].newInstance(1, "你好", '嗎');  
        // 獲取Test類繼承的父類以及實現的接口  
        Class<?> parents = testClass.getSuperclass();  
        // 打印出Test類的父類名稱  
        System.out.println(parents.getName());  
        // 獲取Test類的所有實現的接口  
        Class<?>[] interfaces = testClass.getInterfaces();  
        for (int i = 0; i < interfaces.length; i++) {  
            System.out.println(interfaces[i].getName());  
        }  
    } catch (ClassNotFoundException e) {  
        e.printStackTrace();  
    } catch (InstantiationException e) {  
        e.printStackTrace();  
    } catch (IllegalAccessException e) {  
        e.printStackTrace();  
    } catch (IllegalArgumentException e) {  
        e.printStackTrace();  
    } catch (InvocationTargetException e) {  
        e.printStackTrace();  
    }  
}  

} </pre>

 本文由用戶 open代碼123 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!