資源描述:
《Java學(xué)習(xí)筆記之--Java機(jī)制》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、1.我們可以通過(guò)Class類(lèi)來(lái)加載類(lèi),通過(guò)Class類(lèi)下面的forName()方法來(lái)加載一個(gè)對(duì)象。出Candyjava脅E)loadClassjavapackageaaa;publicclassCandy{static{System.outprintln("loadCandy*');}publicstaticvoidmain(String[]args){System.outprintln("loadCandyMain");
2、}}loadClassjavapackageaaa;publicclassloadClasspublicstaticvoidm2in(String[]args
3、){System.ouf.pnntln(”beforloadcandyM);try{Class.forA/ame(Maaa.
4、Oandyn);}catch(ClassNotFoundExceptione){System.outprintln(e.toString());}}}別B嚴(yán)Javadoc込聲明回血fe小J
5、publicclassloadClass{publicstaticvoidmain(String[]args){System.outprintln(Mbeforloadcandy”);Candyca=newCandy();
6、}}<£?madoc僅MMXjiMTOK~'止■loadCS”(Java胡IW)D:Vav>jdkl.7.0b;npvAw.exe(2012-5-7:belorloadcandyloadCandy從上面可以看出,效果是一樣的。但forName()是動(dòng)態(tài)加載,即便沒(méi)有這個(gè)Candy類(lèi),也不會(huì)出現(xiàn)錯(cuò)誤,但通過(guò)new的話(huà)就會(huì)出現(xiàn)錯(cuò)誤。同時(shí),forName()方
7、法它返回的是一個(gè)Class類(lèi)型,而不是加載的這個(gè)類(lèi)的類(lèi)型,所以無(wú)法這樣寫(xiě):Candyca=Class.forName("aaa.Candy");而只能寫(xiě)成:Classca=Class.forName("aaa.Candy");那這種情況下,ca就不能使用Candy類(lèi)中的方法了,解決的方法是用反射機(jī)制。一般情況下,我們用forName()只是用來(lái)加載驅(qū)動(dòng)。1.Java提供了一種簡(jiǎn)便生成Class對(duì)象的方法:類(lèi)標(biāo)記Classc=T.class淇中T可以使數(shù)據(jù)類(lèi)型,也可是是類(lèi)名。Classc1=int.class;Classc2=double[].class;Classc3=Candy
8、.class;//Candy是一個(gè)類(lèi)jpackageaaa;
9、■publicclassloadClasspublicstaticvoidshowName(Candycan){Classc仁can.getClass();〃getClass方法可以趺得類(lèi)的類(lèi)型Classc2=Candy.class;//T.class方法可以創(chuàng)建f類(lèi)if(c1==c2)System.oatprintln(HthisisCandyobjectM);}publicstaticvoidmain(String[]args)showName(nevjCandy());}:司監(jiān)@Javadoc屬亙明K止aload
10、Class[Java應(yīng)用程序]D:Javajdkl.7.0binjavaw.exe(2012-5-7下牛3:28:14)thisisCandyobject1.我們前面知道,還可以通過(guò)instanceof來(lái)判斷到底是哪一個(gè)類(lèi)。packageaaa;publicclassloadClasspublicstaticvoidshowName(Candycan){(Classc仁can.getClass();〃getClass方法可i/;:宀艾的類(lèi):Classc2=Candy?class;//r.class方法瓦以創(chuàng)建一^類(lèi)if(c1==c2){System.outprintln(
11、HthisisCandycbject”);}if(caninstanceofCandy){System.ourprintln(HthisisCandyobject");}}publicstaticvoidmain(String[]args)AK?JavadocR聲明甩a囚妙MfSS