在反射機(jī)制中,Class.forName(className).newInstance();
如果你想通過反射機(jī)制得到當(dāng)前包的某個(gè)類的實(shí)例,傳入類名的同時(shí)必須傳入包名。
例如在包c(diǎn)om.coderdream下有兩個(gè)類Shape,ShapeFactory,如果你想在ShapeFactory中的某個(gè)方法中用反射的方法生成Shape類,那么如果直接使用:
Class.forName("Shape").newInstance();
會拋出找不到類的異常,因?yàn)榇_實(shí)沒有Shape類,而只有com.coderdream.Shape類。
但是我們傳參數(shù)時(shí)一般只會傳不帶包的類名,那么我們可以這樣處理:
String packageName = new ShapeFactory().getClass().getPackage().getName();
return (Shape) Class.forName(packageName + "." + className).newInstance();
其中 new ShapeFactory().getClass().getPackage().getName() 會得到包名“com.coderdream”,我們只要加上“.”和類名就沒有問題了。
posted on 2007-11-23 15:34
CoderDream 閱讀(6354)
評論(2) 編輯 收藏 所屬分類:
經(jīng)驗(yàn)點(diǎn)滴