欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
反射中Class.forName()和ClassLoader.loadClass()的區別

一 Java類(lèi)裝載過(guò)程

裝載:通過(guò)累的全限定名獲取二進(jìn)制字節流,將二進(jìn)制字節流轉換成方法區中的運行時(shí)數據結構,在內存中生成Java.lang.class對象; 鏈接:執行下面的校驗、準備和解析步驟,其中解析步驟是可以選擇的;   校驗:檢查導入類(lèi)或接口的二進(jìn)制數據的正確性;(文件格式驗證,元數據驗證,字節碼驗證,符號引用驗證)   準備:給類(lèi)的靜態(tài)變量分配并初始化存儲空間;
  解析:將常量池中的符號引用轉成直接引用;
初始化:激活類(lèi)的靜態(tài)變量的初始化Java代碼和靜態(tài)Java代碼塊,并初始化程序員設置的變量值。

二 分析 Class.forName()和ClassLoader.loadClass

    

Class.forName(className)方法,內部實(shí)際調用的方法是 Class.forName(className,true,classloader);第2個(gè)boolean參數表示類(lèi)是否需要初始化, Class.forName(className)默認是需要初始化。

一旦初始化,就會(huì )觸發(fā)目標對象的 static塊代碼執行,static參數也也會(huì )被再次初始化。 ClassLoader.loadClass(className)方法,內部實(shí)際調用的方法是 ClassLoader.loadClass(className,
false);第2個(gè) boolean參數,表示目標對象是否進(jìn)行鏈接,false表示不進(jìn)行鏈接,由上面介紹可以,

不進(jìn)行鏈接意味著(zhù)不進(jìn)行包括初始化等一些列步驟,那么靜態(tài)塊和靜態(tài)對象就不會(huì )得到執行



三  數據庫鏈接為什么使用Class.forName(className)

 

JDBC  Driver源碼如下,因此使用Class.forName(classname)才能在反射回去類(lèi)的時(shí)候執行static塊。

static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException('Can't register driver!'); }}

 

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JAVA虛擬機加載類(lèi)的方式解析
Class.forName和ClassLoader.loadClass區別
理解class.forName()
類(lèi)加載器ClassLoader的詳解
關(guān)于class.forname和contextClassloader
Java類(lèi)加載機制
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久