類的載入和反射機制

2021-10-09 03:01:17 字數 1864 閱讀 7304

1.啟動jvm

2.將需要執行的class檔案載入到虛擬機器記憶體中

3.找到主類,開始執行主函式

載入步驟:

1.先委託父類載入類,如果父類已經載入,就不需要再次載入,如果父類沒有載入,再由本載入器載入

2.解析類路徑,將類路徑轉換成檔案路徑

3.通過檔案輸入流來讀取class檔案,得到位元組陣列

4.將位元組陣列轉換成類物件,物件的型別是class型別

應用類載入器,負責載入核心類,載入自己寫的類

extclassloader

擴充套件類載入器,負責載入擴充套件類庫

bootstrap

jvm內建的載入器

bootstrap

類載入器是jvm的一部分,隨著啟動虛擬機器就會建立乙個bootstrap類載入器物件

1.通過類名.class

class c1 = student.class;

2.通過物件的getclass()方法

class c2

= stu.

getclass()

;

3.通過類載入器獲得class物件

classloader classloader = classloader.

getsystemclassloader()

; class c3

= classloader.

loadclass

("com.newer.test.student"

);

4.通過 class.forname()獲得class物件;

class c4

= class.

forname

("com.newer.test.student"

);

1.獲得所有可見的構造方法

constructor[

] cons= c.

getconstructors()

;

2.獲得所有已經宣告的構造方法

constructor cons2= c.getdeclaredconstructors();

3.獲得指定的可見的某乙個構造方法

constructor cc = c.

getconstructor

(int

.class

,string.

class

,int

.class

);

4.從宣告的方法中獲得指定的構造方法

constructor cc2 = c.

getdeclaredconstructor

(int

.class

);

通過構造方法來例項化物件

object obj = cc.

newinstance

(構造方法的引數)

;

訪問私有構造方法

cc2.

setaccessible

(true

);

java通過反射機制載入類方法和例項方法

假設某乙個類的類名是a.現在我想要通過反射機制找到其中的某乙個方法functionb 並呼叫這個方法。method functionb a.class.getmethod functionb class.paramtype functionb.invoke a.class,object.args 這...

Java反射機制總結學習 動態載入類

首先有如下 public class dynamicloadclass else if b equals args 0 class a class b 上面 可以正常編譯 執行。但是如果此時沒有b類,而且,我們的需求也不需要b類,就只用a類的方法就可以了,這個時候我們就需要main函式的 然後重新編...

對於類的載入和類反射的理解

總體來說,類載入一共要進行三個階段 載入 將j a原始檔預編譯成j a.class位元組碼檔案然後載入進記憶體當中,並且將這些靜態資料轉換成方法區執行時的資料結構,最後生成乙個代表這個類的j a.lang.class物件 有了物件就能夠呼叫類的方法,這也是反射的基礎 驗證 對載入的類進行jvm規範驗...