亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java“ Class.forName()”和“ Class.forName()newInstance()”之間有什么區別?

瀏覽:90日期:2024-05-07 17:28:03
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解決Java“ Class.forName()”和“ Class.forName()newInstance()”之間有什么區別??

也許一個示例演示如何使用兩種方法將有助于你更好地理解事物。因此,請考慮以下類:

package test;public class Demo { public Demo() {System.out.println('Hi!'); } public static void main(String[] args) throws Exception {Class clazz = Class.forName('test.Demo');Demo demo = (Demo) clazz.newInstance(); }}

如其javadoc中所述,調用將返回與具有給定字符串名稱的類或接口關聯的對象,即它返回受type變量影響的對象。Class.forName(String) Classtest.Demo.classclazzClass

然后,調用創建該 對象表示的類的新實例。就像通過帶有空參數列表的表達式實例化該類。換句話說,這實際上等于a 并返回的新實例。clazz.newInstance() Classnewnew Demo()Demo

Demo因此,運行此類將輸出以下輸出:

Hi!

與傳統的最大區別new在于,它newInstance可以實例化一個直到運行時才知道的類,從而使代碼更具動態性。

一個典型的示例是JDBC API,它在運行時加載執行工作所需的確切驅動程序。EJB容器,Servlet容器是另一個很好的例子:它們使用動態運行時加載來加載和創建在運行時之前一無所知的組件。

實際上,如果你想走得更遠,請看一下Ted Neward的論文《理解Class.forName()》,我在上一段中對此進行了解釋。

編輯(從發表為評論的OP中回答問題):JDBC驅動程序的情況有點特殊。如《 JDBC API入門》中DriverManager章節所述:

(…)Driver加載了一個類,因此通過以下DriverManager兩種方式之一自動向進行注冊:

通過調用方法Class.forName。這將顯式加載驅動程序類。由于它不依賴任何外部設置,因此推薦使用這種加載驅動程序的方式來使用該DriverManager 框架。以下代碼加載該類acme.db.Driver:

Class.forName('acme.db.Driver');

如果acme.db.Driver編寫了這樣的代碼以便加載它會導致創建一個實例,并且還 DriverManager.registerDriver以該實例作為參數進行調用(應該這樣做),則它在 DriverManager驅動程序列表中,可用于創建連接。

(...)

在這兩種情況下,新加載的Driver類都有責任通過調用進行注冊DriverManager.registerDriver。如前所述,這應該在加載類時自動完成。

為了在初始化期間注冊自己,JDBC驅動程序通常使用一個靜態初始化塊,如下所示:

package acme.db;public class Driver { static {java.sql.DriverManager.registerDriver(new Driver()); } ...}

調用Class.forName(“acme.db.Driver”)會導致acme.db.Driver類的初始化,并因此導致靜態初始化塊的執行。并且 Class.forName(“acme.db.Driver”)確實會“創建”一個實例,但這只是實現(良好)JDBC驅動程序的結果。

解決方法

Class.forName()和之間有什么區別Class.forName().newInstance()?

我不了解其中的重大區別(我已經閱讀了一些有關它們的信息!)。請你幫助我好嗎?

標簽: java
相關文章:
主站蜘蛛池模板: 欧美黑人在线视频 | 亚洲精品小说一区二区三区 | 国产欧美日韩综合精品一区二区 | 国产拍拍1000部ww | xxxww日本| 国产女人伦码一区二区三区不卡 | 国产色婷婷亚洲 | 国产日韩精品在线 | 欧美日韩不卡视频一区二区三区 | 青青草原综合久久大伊人精品 | 国产区在线观看 | 性亚洲| 无圣光私拍一区二区三区 | 国产免费一区二区三区 | 亚洲欧美日韩高清一区二区一 | 亚洲人成在线影院 | 亚洲国产精品综合久久网络 | 国产亚洲精品欧美一区 | 国产后进白嫩翘臀美女图片 | 97一区二区三区四区久久 | 丁香亚洲综合五月天婷婷 | 激情久久久久久久久久 | 日韩在线观看第一页 | 成在线人免费视频 | 999精品视频在线 | 精彩视频一区二区三区 | 日韩中文视频 | 欧美亚洲欧美日韩中文二区 | 精品国产一区在线观看 | 亚洲无毛片 | 黄色片视频国产 | 亚洲第九十九页 | 国产精品亚洲片在线va | 欧美三级自拍 | 一级黑寡妇毛片免费视频 | 国产美乳在线观看 | 亚洲黄频| 黄色片网址在线观看 | 亚洲欧美经典 | 香蕉乱码成人久久天堂爱免费 | 精品国产一区二区三区香蕉沈先生 |