Java反射技術

java反射

1. 什麼是反射技術?

反射機制實在運行狀態中,對任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用對象的方法和屬性;這種動態獲取的信息以及動態調用對方法的功能稱爲JAVA語言的反射機制。

2.反射機制能做什麼?

-在運行時判斷任意一個對象所屬的類

-在運行時構造任意一個類的對象

-在運行時判斷任意一個類所具有的成員變量和方法


JAVA中Class類和用法

原理:JAVA程序在運行時,系統一直對所有的對象進行所謂運行時類型標識,即所謂的RTTI。這項信息記錄了每個對象所屬的類。虛擬機通常使用運行時類型信息選準正確方法去執行,用來保存這些類型信息的類就是Class類。這個Class類封裝一個對象和接口運行時的狀態,當裝載類時,Class類型的對象自動創建。

例如你創建一個human,那麼Java會生成一個內容是Human 的Class類的對象

Class類不能使用new來創建,這個對象是JVM創建的,因爲這個類沒有public構造函數。

  1. Class類原理
    在object這個類中有一個方法:getClass()這個方法是用來取得該類已經被實例化了的對象的Class的引用,這個引用指向是Class類的對象。我們自己無法生成一個Class對象,而這個Class類的對象實在當各類被調用時由JVM

如何獲得一個Class類對象。

public static void main(String[] args) {
    System.out.println("Hello World!");
    //第一種方法
    try {
        Class obj = Class.forName("Shape");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    //第二種方法
    Shape shape =new Shape();
    Class obj = shape.getClass();
    Class obj1 = obj.getSuperclass();//這個函數作用時獲取shape父類的類型

    //第三種方法
    Class obj2 = Shape.class;
}

三使用Class類的對象來生成目標類的實例對象

//通過字符串的方式創建一個類,就得使用Class對象
Class rectangle =Class.forName(“Shape”);
Shape rectInstanc = (Shape)rectangle.newInstance();
System.out.println(rectInstanc.area(100,200));
使用泛型化Class引用生成帶類型的目標實例;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章