免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
new關(guān)鍵字和newInstance()方法的區(qū)別
類的加載方式不同
    在執(zhí)行Class.forName('a.class.Name')時(shí),JVM會(huì)在classapth中去找對(duì)應(yīng)的類并加載,這時(shí)JVM會(huì)執(zhí)行該類的靜態(tài)代碼段。在使用newInstance()方法的時(shí)候,必須保證這個(gè)類已經(jīng)加載并且已經(jīng)連接了,而這可以通過Class的靜態(tài)方法forName()來完成的。
    使用關(guān)鍵字new創(chuàng)建一個(gè)類的時(shí)候,這個(gè)類可以沒有被加載,一般也不需要該類在classpath中設(shè)定,但可能需要通過classlaoder來加載。
所調(diào)用的構(gòu)造方法不盡相同
    new關(guān)鍵字能調(diào)用任何構(gòu)造方法。
    newInstance()只能調(diào)用無參構(gòu)造方法。
執(zhí)行效率不同
    new關(guān)鍵字是強(qiáng)類型的,效率相對(duì)較高。
    newInstance()是弱類型的,效率相對(duì)較低。

    既然使用newInstance()構(gòu)造對(duì)象的地方通過new關(guān)鍵字也可以創(chuàng)建對(duì)象,為什么又會(huì)使用newInstance()來創(chuàng)建對(duì)象呢?
    假設(shè)定義了一個(gè)接口Door,開始的時(shí)候是用木門的,定義為一個(gè)類WoodenDoor,在程序里就要這樣寫 Door door = new WoodenDoor() 。假設(shè)后來生活條件提高,換為自動(dòng)門了,定義一個(gè)類AutoDoor,這時(shí)程序就要改寫為 Door door = new AutoDoor() 。雖然只是改個(gè)標(biāo)識(shí)符,如果這樣的語句特別多,改動(dòng)還是挺大的。于是出現(xiàn)了工廠模式,所有Door的實(shí)例都由DoorFactory提供,這時(shí)換一種門的時(shí)候,只需要把工廠的生產(chǎn)模式改一下,還是要改一點(diǎn)代碼。
    而如果使用newInstance(),則可以在不改變代碼的情況下,換為另外一種Door。具體方法是把Door的具體實(shí)現(xiàn)類的類名放到配置文件中,通過newInstance()生成實(shí)例。這樣,改變另外一種Door的時(shí)候,只改配置文件就可以了。示例代碼如下:
String className = 從配置文件讀取Door的具體實(shí)現(xiàn)類的類名; 
Door door = (Door) Class.forName(className).newInstance();
    再配合依賴注入的方法,就提高了軟件的可伸縮性、可擴(kuò)展性。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java Class.forName()用法和newInstance()方法原理解析
JAVA開發(fā):深入研究java.lang.Class類
Java反射
學(xué)會(huì)反射后,我被面試官錄取了(干貨)
吊打面試官系列:說說反射的用途及實(shí)現(xiàn)?
java中class.forName和classLoader加載類的區(qū)分
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服