日韩不卡免费视频-日韩不卡视频在线-日韩不卡视频在线观看-日韩不卡一二三区-伊人二区-伊人丁香花久久爱综合

JAVA虛擬機加載類的方式解析

虛擬機加載類的途徑 
1
、由 new 關鍵字創建一個類的實例 
  
在由運行時刻用 new 方法載入 
  
如:Dog dog new Dog(); 
2
、調用 Class.forName() 方法 
  
通過反射加載類型,并創建對象實例 
  
如:Class clazz Class.forName“Dog”); 
       Object dog
clazz.newInstance(); 
3
、調用某個 ClassLoader 實例的 loadClass() 方法 
  
通過該 ClassLoader 實例的 loadClass() 方法載入。應用程序可以通過繼承 ClassLoader 實現自己的類裝載器。 
  
如:Class clazz classLoader.loadClass“Dog”); 
       Object dog
clazz.newInstance();
三者的區別: 
1
2使用的類加載器是相同的,都是當前類加載器。(即:this.getClass.getClassLoader)。3由用戶指定類加載器。如果需要在當前類路徑以外尋找類,則只能采用第3種方式。第3種方式加載的類與當前類分屬不同的命名空間。另外,1是靜態加載,23是動態加載 
兩個異常(exception) 
靜態加載的時候如果在運行環境中找不到要初始化的類,拋出的是NoClassDefFoundError,它在JAVA的異常體系中是一個Error 
動態加載的時候如果在運行環境中找不到要初始化的類,拋出的是ClassNotFoundException,它在JAVA的異常體系中是一個checked異常 
Class.forName
ClassLoader.loadClass區別 
Class
的裝載包括3個步驟:加載(loading,連接(link,初始化(initialize
Class.forName(className)
實際上是調用Class.forName(className, true, this.getClass().getClassLoader())。第二個參數,是指Classloading后是不是必須被初始化。 
ClassLoader.loadClass(className)
實際上調用的是ClassLoader.loadClass(name, false),第二個參數指Class是否被link 
Class.forName(className)
裝載的class已經被初始化,而ClassLoader.loadClass(className)裝載的class還沒有被link。一般情況下,這兩個方法效果一樣,都能裝載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塊中會注冊自己到java.sql.DriverManager。而static塊就是在Class的初始化中被執行。 
所以這個地方就只能用Class.forName(className) 
對于相同的類,JVM最多會載入一次。但如果同一個class文件被不同的ClassLoader載入,那么載入后的兩個類是完全不同的。因為已被加載的類由該類的類加載器實例與該類的全路徑名的組合標識。設有 packagename.A Class ,分別被類加載器 CL1 CL2 加載,所以系統中有兩個不同的 java.lang.Class 實例: <CL1, packagename.A> <CL2, packagename.A>
北大青鳥網上報名
北大青鳥招生簡章
主站蜘蛛池模板: 国产裸体美女视频全黄 | 一级片中文字幕 | 国产精品一区二区丝瓜 | 99久久精品费精品国产一区二区 | a站在线观看 | 国产91在线 | 亚洲 | 在线はじめてのおるすばん | 窝窝女人体国产午夜视频 | 国内精品久久久久影院网站 | 欧美一级第一免费高清 | 在线亚洲精品视频 | 欧美激情久久久久久久久 | 中文字幕在线一区二区在线 | 午夜三级在线观看 | 国产免费爽爽视频免费可以看 | 欧美日韩一区二区综合 | 高跟丝袜美女一级毛片 | 亚洲午夜片| 久久99久久精品免费思思 | 99国产精品免费视频观看 | 久久在线免费观看 | 黄网国产 | 网禁呦萝资源网站在线观看 | 视频一区色眯眯视频在线 | 黄篇网址| 亚洲综合伊人色一区 | 亚洲第一毛片 | 欧洲亚洲综合一区二区三区 | 欧美视频在线观看网站 | 色综合亚洲七七久久桃花影院 | 久久久久久久久久久久久久久久久久 | 欧美国产成人免费观看永久视频 | 97影院理论片 | 国产精品yjizz视频网一二区 | 成人免费福利网站在线看 | 成人国产精品免费网站 | 9999毛片免费看 | 亚洲男人的天堂在线 | 久久性久久性久久久爽 | 午夜久久网 | 午夜三级a三级三点在线观看 |