從制造到創造
          軟件工程師成長之路
          posts - 292,  comments - 96,  trackbacks - 0
          在反射機制中,Class.forName(className).newInstance();
          如果你想通過反射機制得到當前包的某個類的實例,傳入類名的同時必須傳入包名。

          例如在包com.coderdream下有兩個類Shape,ShapeFactory,如果你想在ShapeFactory中的某個方法中用反射的方法生成Shape類,那么如果直接使用:
              Class.forName("Shape").newInstance();
          會拋出找不到類的異常,因為確實沒有Shape類,而只有com.coderdream.Shape類。

          但是我們傳參數時一般只會傳不帶包的類名,那么我們可以這樣處理:
              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 閱讀(6359) 評論(2)  編輯  收藏 所屬分類: 經驗點滴

          FeedBack:
          # re: 反射應用經驗:得到當前類的包名
          2012-04-09 15:55 | 游客
          String packageName = new ShapeFactory().getClass().getPackage().getName();
          可以改為
          String packageName = this.getClass().getPackage().getName();

          可以減少一次new  回復  更多評論
            
          # re: 反射應用經驗:得到當前類的包名[未登錄]
          2013-03-21 12:22 | test
          厲害 ,謝謝你 感激。  回復  更多評論
            

          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(9)

          我參與的團隊

          隨筆分類(245)

          隨筆檔案(239)

          文章分類(3)

          文章檔案(3)

          收藏夾(576)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 459380
          • 排名 - 114

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 太仆寺旗| 敦化市| 乳山市| 客服| 南岸区| 昌图县| 泾阳县| 榆社县| 宜兰市| 河东区| 常州市| 高邮市| 浦北县| 恩平市| 灵丘县| 稷山县| 新巴尔虎左旗| 吴川市| 永丰县| 荔浦县| 五指山市| 方城县| 法库县| 关岭| 四会市| 连城县| 银川市| 陇西县| 凤翔县| 荆门市| 曲阳县| 高尔夫| 博兴县| 太谷县| 望城县| 黎平县| 合水县| 辛集市| 乌拉特后旗| 共和县| 泗阳县|