日本粉色视频-日本理论片中文在线观看2828-日本理论在线观看被窝网-日本黄大片在线观看-国产精品福利在线观看秒播-国产精品福利资源在线

JAVA虛擬機(jī)加載類的方式解析

虛擬機(jī)加載類的途徑 
1
、由 new 關(guān)鍵字創(chuàng)建一個(gè)類的實(shí)例 
  
在由運(yùn)行時(shí)刻用 new 方法載入 
  
如:Dog dog new Dog(); 
2
、調(diào)用 Class.forName() 方法 
  
通過反射加載類型,并創(chuàng)建對(duì)象實(shí)例 
  
如:Class clazz Class.forName“Dog”); 
       Object dog
clazz.newInstance(); 
3
、調(diào)用某個(gè) ClassLoader 實(shí)例的 loadClass() 方法 
  
通過該 ClassLoader 實(shí)例的 loadClass() 方法載入。應(yīng)用程序可以通過繼承 ClassLoader 實(shí)現(xiàn)自己的類裝載器。 
  
如:Class clazz classLoader.loadClass“Dog”); 
       Object dog
clazz.newInstance();
三者的區(qū)別: 
1
2使用的類加載器是相同的,都是當(dāng)前類加載器。(即:this.getClass.getClassLoader)。3由用戶指定類加載器。如果需要在當(dāng)前類路徑以外尋找類,則只能采用第3種方式。第3種方式加載的類與當(dāng)前類分屬不同的命名空間。另外,1是靜態(tài)加載,23是動(dòng)態(tài)加載 
兩個(gè)異常(exception) 
靜態(tài)加載的時(shí)候如果在運(yùn)行環(huán)境中找不到要初始化的類,拋出的是NoClassDefFoundError,它在JAVA的異常體系中是一個(gè)Error 
動(dòng)態(tài)加載的時(shí)候如果在運(yùn)行環(huán)境中找不到要初始化的類,拋出的是ClassNotFoundException,它在JAVA的異常體系中是一個(gè)checked異常 
Class.forName
ClassLoader.loadClass區(qū)別 
Class
的裝載包括3個(gè)步驟:加載(loading,連接(link,初始化(initialize
Class.forName(className)
實(shí)際上是調(diào)用Class.forName(className, true, this.getClass().getClassLoader())。第二個(gè)參數(shù),是指Classloading后是不是必須被初始化。 
ClassLoader.loadClass(className)
實(shí)際上調(diào)用的是ClassLoader.loadClass(name, false),第二個(gè)參數(shù)指Class是否被link 
Class.forName(className)
裝載的class已經(jīng)被初始化,而ClassLoader.loadClass(className)裝載的class還沒有被link。一般情況下,這兩個(gè)方法效果一樣,都能裝載Class。但如果程序依賴于Class是否被初始化,就必須用Class.forName(name)了。 
例如,在JDBC編程中,�?吹竭@樣的用法,Class.forName("com.mysql.jdbc.Driver"). 
如果換成了getClass().getClassLoader().loadClass("com.mysql.jdbc.Driver"),就不行。 
com.mysql.jdbc.Driver
的源代碼如下: 
Java
代碼

// Register ourselves with the DriverManager   

static {   

    try {   

        java.sql.DriverManager.registerDriver(new Driver());   

    } catch (SQLException E) {   

        throw new RuntimeException("Can't register driver!");   

    }   

}  

原來,Driverstatic塊中會(huì)注冊(cè)自己到java.sql.DriverManager。而static塊就是在Class的初始化中被執(zhí)行。 
所以這個(gè)地方就只能用Class.forName(className) 
對(duì)于相同的類,JVM最多會(huì)載入一次。但如果同一個(gè)class文件被不同的ClassLoader載入,那么載入后的兩個(gè)類是完全不同的。因?yàn)橐驯患虞d的類由該類的類加載器實(shí)例與該類的全路徑名的組合標(biāo)識(shí)。設(shè)有 packagename.A Class ,分別被類加載器 CL1 CL2 加載,所以系統(tǒng)中有兩個(gè)不同的 java.lang.Class 實(shí)例: <CL1, packagename.A> <CL2, packagename.A>。
北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡(jiǎn)章
主站蜘蛛池模板: 亚洲精品午夜一区二区在线观看 | 久久精品视频免费观看 | 久草视频福利在线观看 | 一级毛片在线视频 | 性做久久久久免费看 | 高清国产美女一级a毛片 | 国产第2页 | 亚洲国产人成中文幕一级二级 | 99re热视频这里只精品 | 欧美日韩精品一区二区视频在线观看 | 大臿蕉香蕉大视频成人 | 日产一一到六区网站免费 | 欧美一线不卡在线播放 | 毛片免费看看 | 一区二区三区四区产品乱码伦 | 国产男女猛烈无遮档免费视频网站 | 免费无遮挡毛片 | 久久精品国产99国产精品免费看 | 国产真实自拍 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 日韩精品观看 | 日本一级特黄在线播放 | 特毛片 | 国产农村乱子伦精品视频 | 亚洲男人的天堂在线观看 | 91亚洲国产成人久久精品网址 | 亚洲成年人网址 | 久久三级毛片 | 成人免费公开视频 | 国产三级视频在线 | 成人免费在线视频网 | 欧美色xxxx| 国产男女爽爽爽免费视频 | 九九精品在线视频 | 亚洲美女aⅴ久久久91 | 成人欧美午夜视频毛片 | avav男人天堂 | 国产一国产一有一级毛片 | 亚洲免费成人网 | 一本伊大人香蕉高清在线观看 | 一级毛片视频免费 |