javaSE_day17_反射

應(yīng)用程序啟動

? java 類名

? 調(diào)用JVM,啟動 JVM進程

應(yīng)用程序結(jié)束

? 1.所有代碼執(zhí)行完了;

? 2.有沒能? 處理 的Exception; Error

? 3.System.exit(0)

? 4.運行的平臺 強制 結(jié)束。

----------------------------------------

類的聲明周期

1.類的加載

? 把 類的 字節(jié)碼文件? 加載 到JvM的內(nèi)存 方法區(qū)中,并且 生成 一個 Class類型 的對象。

? ClassLoader 加載的

2.連接

???? 1)驗證:驗證 字節(jié)碼文件 格式是否正確。

? ? ? 2)準(zhǔn)備:為 類變量(靜態(tài)) 分配空間 默認初始化。

? ? ? 3)解析:把 符號引用 轉(zhuǎn)換(替換成) 直接引用(指針:指向內(nèi)存地址的指針)。

? ? ? ? pulic void run(){ 代碼}

3.初始化:為類變量 進行 聲明處 和 靜態(tài)塊處初始化。

??????? 當(dāng)創(chuàng)建某個類的新實例時

? ????? 當(dāng)調(diào)用某個類的靜態(tài)成員;

?? ? ?? 當(dāng)初始化某個子類時,該子類的所有父類都會被初始化。

? ? ? ? 當(dāng)使用反射方法強制創(chuàng)建某個類或接口的對象時

??? ? ? 當(dāng)虛擬機java命令運行啟動類

--------------------------------------------------

類加載器

? 1.根類加載器

??? 加載核心類庫

? ? D:\Java\jdk1.8.0_144\jre\lib

? ? C++寫的

? 2.擴展類加載器

? ? 加載 擴展類庫

? ? D:\Java\jdk1.8.0_144\jre\lib\ext

? 3.系統(tǒng)類加載器(應(yīng)用類加載器)

? ? classpath路徑下的類 .

? 4.自定義類加載器

? ? 路徑 不是classpath路徑

------------------------------------------------

父類 委托 機制 (雙親)

Student.class

1.查找 此類 是否 已經(jīng)被加載過 ,已經(jīng)加載過了,就返回Class對象

2.系統(tǒng)類加載器先不加載,父加載器(擴展類加載器) 是否存在;存在 ,父加載器(擴展類加載器) 遞歸調(diào)用 父加載器 (根類加載器) 加載;如果 根類加載器 能加載 ,就返回 Class對象,如果不能加載,返回擴展類加載器加載 ,能加載 返回 Class對象, 不能加載,用系統(tǒng)類加載器加載。

3.系統(tǒng)類加載器先不加載,父加載器(擴展類加載器) 是否存在;不存在,請求 根類加載器加載,能加載 返回 Class類型對象,不能,自己加載。

-------------------------------------------------

反射:從 方法區(qū)的 字節(jié)碼中 動態(tài)的獲得 類中的信息。

獲得:

屬性

? getDeclaredFields()獲得所有屬性(包括私有)

? getName() 獲得名字

? getType() 獲得類型

? getModifiers() 獲得訪問修飾符

? set() 給屬性賦值

? get() 獲得屬性值

方法

? getDeclaredMethods() 獲得所有方法

? getReturnType()? ? ? 獲得返回類型

? getParameterTypes()? 獲得參數(shù)列表

? invoke() 調(diào)用方法

構(gòu)造

? getDeclaredConstructors()所有構(gòu)造器

? newInstance() 調(diào)用構(gòu)造器

------------------------------------------------------------------

注解:從JDK5開始, Java增加了對元數(shù)據(jù)(MetaData)的支持,就是注解Annotation;注解是指代碼里的特殊標(biāo)記,這些標(biāo)記可以在編譯、類加載、運行時被讀取,并執(zhí)行相應(yīng)的處理。

@interface 注解名{

? //成員變量,類型參數(shù)

? public

? 默認

? public? 類型 名();

? public 類型 名() default 默認值;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容