第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java 中的class.forName()是什么意思?

java 中的class.forName()是什么意思?

牧羊人nacy 2019-05-28 10:06:18
java 中的class.forName()是什么意思
查看完整描述

4 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗 獲得超7個贊

Class.forName:返回與給定的字符串名稱相關(guān)聯(lián)類或接口的Class對象。

Class.forName是一個靜態(tài)方法,同樣可以用來加載類。該方法有兩種形式:Class.forName(String name, boolean initialize, ClassLoader loader)和 Class.forName(String className)。第一種形式的參數(shù) name表示的是類的全名;initialize表示是否初始化類;loader表示加載時使用的類加載器。第二種形式則相當(dāng)于設(shè)置了參數(shù) initialize的值為 true,loader的值為當(dāng)前類的類加載器。

如下圖所示,java類型的屬性名稱叫name,可以通過forName的方法獲取到這個類的實例,從而獲取到類里面的屬性。

擴展資料:

注意:

在指定類給 class.forName() 方法后,如果找不到指定的類,會拋出ClassNotFoundException 異常。Class 的靜態(tài) forName() 方法有兩個版本,上面的代碼是只指定類名稱的版本,而另一個版本可以讓你指定類名稱、加載時是否運行靜態(tài)區(qū)塊、指定類加載器:

Static Class forName(String name, boolean initialize, ClassLoader loader)

默認(rèn)在加載類的時候,如果類中有定義靜態(tài)區(qū)塊則會運行它。你可以使用 class.forName() 的第二個版本,將 initialize 設(shè)定為 false,這樣在加載類時并不會立即運行靜態(tài)區(qū)塊,而會在使用類建立對象時才運行靜態(tài)區(qū)塊。為了印證,可以先設(shè)計一個測試類:

package cn.sunzn.demo;public class TestClass {    static {System.out.println("[運行靜態(tài)區(qū)塊]");}}


查看完整回答
反對 回復(fù) 2019-06-01
?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗 獲得超6個贊

class.forName是用到了java.lang.Class.forName包的方法,他是通過類的全稱來返回一個類,全稱是指包名稱加類名稱,他是通過jvm來加載的。這樣你就可以獲取到這個類了,你可以通過反射來操作這個類,例如獲取屬性,獲取方法等等。這種方式在框架中比較常見。

如下圖所示,App類里面有個String類型的屬性名稱叫name,我們可以通過forName的方法獲取到這個類的實例,從而獲取到類里面的屬性。

擴展資料:

什么時候用Class.forName()?
先來個熱身,給你一個字符串變量,它代表一個類的包名和類名,你怎么實例化它?你第一想到的肯定是new,但是注意一點:
A a = (A)Class.forName(“pacage.A”).newInstance();
這和你 A a = new A(); 是一樣的效果。

現(xiàn)在言歸正傳。
動態(tài)加載和創(chuàng)建Class 對象,比如想根據(jù)用戶輸入的字符串來創(chuàng)建對象時需要用到:
String str = “用戶輸入的字符串” ;
Class t = Class.forName(str);
t.newInstance();

在初始化一個類,生成一個實例的時候,newInstance()方法和new關(guān)鍵字除了一個是方法,一個是關(guān)鍵字外,最主要有什么區(qū)別?

它們的區(qū)別在于創(chuàng)建對象的方式不一樣,前者是使用類加載機制,后者是創(chuàng)建一個新類。

那么為什么會有兩種創(chuàng)建對象方式?這主要考慮到軟件的可伸縮、可擴展和可重用等軟件設(shè)計思想。



查看完整回答
反對 回復(fù) 2019-06-01
  • 4 回答
  • 0 關(guān)注
  • 709 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號