Jhonney的專欄

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

          classloader

          classloader 和class.forname的區(qū)別
          項目中,發(fā)生了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)進行改變(變)。
          程序中出現(xiàn)的錯誤,可能是由于平臺的classloader是另一套機制

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


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


          網站導航:
           
          主站蜘蛛池模板: 宁国市| 岳普湖县| 衢州市| 达州市| 太和县| 车险| 肥西县| 延长县| 扎兰屯市| 应城市| 玉门市| 蛟河市| 密山市| 凤阳县| 长宁区| 泰顺县| 顺义区| 靖州| 康定县| 河池市| 上林县| 莲花县| 塔河县| 萨迦县| 广安市| 祁东县| 阿拉善左旗| 龙门县| 广德县| 阿拉尔市| 禹城市| 晋中市| 孟津县| 贵定县| 霍林郭勒市| 思茅市| 鄯善县| 舒兰市| 怀仁县| 乌兰浩特市| 安远县|