一般步驟
- 編寫java文件
- 編譯java文件殊鞭,得到class文件或jar文件
- 啟動(dòng)java虛擬機(jī),尋找class文件或jar文件(classloader參與該過程)
- 將class文件加載為Class對(duì)象(classloader參與該過程)
- 初始化Class對(duì)象,生成實(shí)例(classloader參與該過程?)
- 調(diào)用
什么是Class
Java中一切皆為對(duì)象,Class對(duì)象可以暫時(shí)簡單的蔗怠、不準(zhǔn)確的理解為class文件在內(nèi)存中的體現(xiàn)
問題:對(duì)象又是什么?結(jié)構(gòu)化的數(shù)據(jù)吩跋?
Class 對(duì)象獲取
- 通過實(shí)例對(duì)象獲取
Object o = new Object();
Class c = o.getClass();
- 通過類名.class獲取
Class c = Object.class;
- 通過Class.forName()方法獲取
Class.forName("java.lang.Object")
- 通過ClassLoader.loadClass()方法獲取
ClassLoader.getSystemClassLoader().loadClass("java.lang.Object");
Class 中一些有用的信息
- 獲取Class載入路徑
Class.getProtectionDomain().getCodeSource().getLocation()
問題:ProtectionDomain是個(gè)什么東西?
Class Cast 的限制條件
Class Cast 成功需要滿足哪些條件渔工?