資源描述:
《Java學(xué)習(xí)筆記之--Java機制》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、1.我們可以通過Class類來加載類,通過Class類下面的forName()方法來加載一個對象。出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()是動態(tài)加載,即便沒有這個Candy類,也不會出現(xiàn)錯誤,但通過new的話就會出現(xiàn)錯誤。同時,forName()方
7、法它返回的是一個Class類型,而不是加載的這個類的類型,所以無法這樣寫:Candyca=Class.forName("aaa.Candy");而只能寫成:Classca=Class.forName("aaa.Candy");那這種情況下,ca就不能使用Candy類中的方法了,解決的方法是用反射機制。一般情況下,我們用forName()只是用來加載驅(qū)動。1.Java提供了一種簡便生成Class對象的方法:類標(biāo)記Classc=T.class淇中T可以使數(shù)據(jù)類型,也可是是類名。Classc1=int.class;Classc2=double[].class;Classc3=Candy
8、.class;//Candy是一個類jpackageaaa;
9、■publicclassloadClasspublicstaticvoidshowName(Candycan){Classc仁can.getClass();〃getClass方法可以趺得類的類型Classc2=Candy.class;//T.class方法可以創(chuàng)建f類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.我們前面知道,還可以通過instanceof來判斷到底是哪一個類。packageaaa;publicclassloadClasspublicstaticvoidshowName(Candycan){(Classc仁can.getClass();〃getClass方法可i/;:宀艾的類:Classc2=Candy?class;//r.class方法瓦以創(chuàng)建一^類if(c1==c2){System.outprintln(
11、HthisisCandycbject”);}if(caninstanceofCandy){System.ourprintln(HthisisCandyobject");}}publicstaticvoidmain(String[]args)AK?JavadocR聲明甩a囚妙MfSS