ZT文萃

          本博不原創(chuàng),轉(zhuǎn)帖自己感興趣那些事人物,什么入眼貼什么,隨心所欲。
          posts - 93, comments - 5, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Class的getResource方法

          Posted on 2014-05-02 15:48 ZT文萃 閱讀(557) 評論(0)  編輯  收藏 所屬分類: 中間件
          Class的getResource方法,實(shí)際上是靠調(diào)入這個類的ClassLoader的getResource方法來實(shí)現(xiàn)的,如果調(diào)入這個類的ClassLoader是原生的BootStrap ClassLoader,這個ClassLoader是用C++寫成的,在Java中沒有相對應(yīng)的物件。這時(shí)候的實(shí)現(xiàn)靠的是ClassLoader的靜態(tài)方法getSystemResource。

          只有當(dāng)使用Class類的getResource方法的時(shí)候,才會有下面介紹的那種算法。

          這種算法就是說,如果你指定的路徑以/開頭,那么就是從ClassPath的起點(diǎn)開始尋找這個路徑。如果直接以某個名字開頭,那么就是從當(dāng)前包名的目錄為起點(diǎn)開始尋找。
          所以大家如果用過hibernate就知道,有些表示類到數(shù)據(jù)庫表的映射關(guān)系的xml文件就和這個類的class文件放在一起,這樣它就直接使用這個類.class.getResource方法來得到這個xml文件。

          而在使用ClassLoader的getResource方法的時(shí)候,永遠(yuǎn)是以Classpath為直接起點(diǎn)開始尋找資源的。不用擔(dān)心從什么包開始尋找的問題。

          用Class.getResource不加/就是從當(dāng)前包開始找,用ClassLoader.getResource不加/就是直接從Classpath的起點(diǎn)開始尋找。

          當(dāng)然,如果覺得麻煩,你定位資源的時(shí)候全部都使用/開頭的方式就好了
          主站蜘蛛池模板: 百色市| 北安市| 周至县| 宁远县| 长白| 邓州市| 永清县| 崇明县| 盐源县| 河曲县| 凤城市| 岱山县| 昔阳县| 大埔区| 武定县| 宝丰县| 江阴市| 垣曲县| 墨竹工卡县| 呼伦贝尔市| 定州市| 八宿县| 文成县| 江孜县| 临泉县| 宜君县| 普陀区| 咸阳市| 芮城县| 沙洋县| 紫阳县| 额尔古纳市| 黔江区| 永登县| 台东市| 兴隆县| 湘西| 米林县| 临夏市| 霸州市| 嘉义县|