Jhonney的專欄

             ----人見人愛
          隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0
          數據加載中……

          classloader

          classloader 和class.forname的區別
          項目中,發生了classcast異常,源碼處寫的是Thread.currentThread.getContextClassLoader
          后來改成class.forname后OK啦
          Class.forName(String clz);
          使用調用這個語句的對象所使用的ClassLoader作為ClassLoader(
          1)。

          Thread.currentThread().getContextClassLoader())
          返回當前線程使用的ClassLoader(
          2)。


          如果ClassLoader(
          1)“等于”ClassLoader(2),那么這里的使用Class.forName(String clz)和ClassLoader(2).loadClass(String clz)就是等價的。

          如果ClassLoader(
          1)“不等于”ClassLoader(2),那么就是不等價的。

          在框架代碼中,實際情況是ClassLoader(
          1)往往“不等于”ClassLoader(2):
          即調用Class.forName(String clz)的語句所在的類的裝載器不一定就是當前線程使用的類裝載器。
          因為:一個類裝載完了在運行了,該類的所屬的類裝載器就確定了(不變),而在程序運行之中,線程
          的類裝載器都隨時可以通過hread.currentThread().setContextClassLoader(loader)進行改變(變)。
          程序中出現的錯誤,可能是由于平臺的classloader是另一套機制

          posted on 2008-03-23 00:19 Jhonney 閱讀(383) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 普兰店市| 荔浦县| 汉源县| 宁陵县| 吉木乃县| 包头市| 长阳| 句容市| 永川市| 环江| 武邑县| 正阳县| 张家界市| 恩平市| 柞水县| 军事| 新竹市| 麦盖提县| 长阳| 行唐县| 雅江县| 邻水| 齐齐哈尔市| 应用必备| 静宁县| 德钦县| 威海市| 井陉县| 徐闻县| 广平县| 绍兴县| 德钦县| 浦江县| 神木县| 新巴尔虎左旗| 五台县| 东至县| 金溪县| 会理县| 东兴市| 南宁市|