首頁  >  文章  >  Java  >  Java反射的原理及其作用是什麼?

Java反射的原理及其作用是什麼?

PHPz
PHPz轉載
2023-04-26 23:31:06796瀏覽

1.呼叫反射的流程

(1)準備階段:編譯期裝載所有的類,將每個類別的元資訊保存至Class類別物件中,每一個類別對應一個Class物件

(2)取得Class物件:呼叫x.class/x.getClass()/Class.forName() 取得x的Class物件clz(這些方法的底層都是native方法,是在JVM底層編寫好的,涉及到了JVM底層,就先不進行探究了)

(3)進行實際反射操作:透過clz物件取得Field/Method/Constructor物件進行進一步操作

2.取得class類別

要想透過反射取得一個類別的信息,首先要取得此類別對應的Class類別實例,Class類別的實例代表了正在運行中的Java應用的類別和介面。 Class類別沒有公共的建構方法,Class類別物件是在二進位位元組流(一般是.class文件,也可透過網路或zip套件等路徑取得)被JVM載入時,透過呼叫類別載入器的defineClass ()方法來建構的。

/**
 * Instances of the class {@code Class} represent classes and
 * interfaces in a running Java application.
 * {@code Class} has no public constructor. Instead {@code Class}
 * objects are constructed automatically by the Java Virtual Machine as classes
 * are loaded and by calls to the {@code defineClass} method in the class
 * loader.
*/
 
public final class Class<T> implements java.io.Serializable,GenericDeclaration,Type,AnnotatedElement {
    ......
}

以上是Java反射的原理及其作用是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除