<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ZT文萃

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

    Class.getResource()

    Posted on 2014-05-02 15:34 ZT文萃 閱讀(288) 評論(0)  編輯  收藏 所屬分類: 中間件






    查找帶有給定名稱的資源,查找給定類相關的資源的規則是通過定義類的 class loader 實現的。此方法委托給此對象的類加載器。如果此對象通過引導類加載器加載,則此方法將委托給 ClassLoader.getSystemResource(java.lang.String)

    在委托前,使用下面的算法從給定的資源名構造一個絕對資源名:

    • 如果 name'/'  開始,則絕對資源名是 '/' 后面的 name 的一部分。
    • 否則,絕對名具有以下形式:
         modified_package_name/name 

      其中 modified_package_name 是此對象的包名,該名用 '/' 取代了 '.' ('\u002e')。

    Class.getResource(""); 獲取classpath

     

    Class.getResource("JMF.class"); 代表獲取相于類路徑當前包下的SendService.class的類路徑.

    /D:/bak/upload/upload/WebRoot/WEB-INF/classes/jmf/JMF.class-------->打印出的結果

    Class.getResource("/jmf/WebCamSwing.class"); /jmf/WebCamSwing.class->代表相于類路徑的絕對路徑

    file:/D:/bak/upload/upload/WebRoot/WEB-INF/classes/jmf/JMF.class  -------->打印出的結果

     

    我們怎么獲得Object的類路徑:

    Class.getResource("/java/lang/Object.class") 因為Object是通過引導類加載器 (BootStrapClassLoader)加載的,所以此方法通過系統類加載器來查找資料, 所以我們要指定類的絕對路徑/java/lang /Object.class

    public java.net.URL getResource(String name) {
            name = resolveName(name);
            ClassLoader cl = getClassLoader0();
            if (cl==null) {
                // A system class.
                return ClassLoader.getSystemResource(name);
            }
            return cl.getResource(name);
        }

     

    我們來看看如何通過系統類加載器來查找Object:

    Class.getClassLoader().getSystemResource("java/lang/Object.class")

     

    打印出來的結果多是:

    jar:file:/E:/Program/Java/jdk1.5.0_15/jre/lib/rt.jar!/java/lang/Object.class

     

    為什么getResource("")前面要加"/",而getSystemResource("")前面不用加呢?

    private String resolveName(String name) {
            if (name == null) {
                return name;
            }
            if (!name.startsWith("/")) {
                Class c = this;
                while (c.isArray()) {
                    c = c.getComponentType();
                }
                String baseName = c.getName();
                int index = baseName.lastIndexOf('.');
                if (index != -1) {
                    name = baseName.substring(0, index).replace('.', '/')
                        +"/"+name;
                }
            } else {
                name = name.substring(1);
            }
            return name;
        }

     

    其實最后還是要把"/"去掉的...

    主站蜘蛛池模板: 91精品全国免费观看含羞草| 色吊丝性永久免费看码| 日韩插啊免费视频在线观看| 亚洲国产精品无码中文字| 九九热久久免费视频| 亚洲精品国产精品乱码在线观看| 大学生一级毛片免费看| 亚洲专区在线视频| 亚洲成人免费网址| 亚洲一区二区三区在线观看蜜桃| 在线观看亚洲精品专区| 国产成人免费手机在线观看视频 | 国产精品自在自线免费观看 | 一级女人18片毛片免费视频| 亚洲成av人在片观看| 中国一级毛片视频免费看| 亚洲国产无套无码av电影| 最近中文字幕完整免费视频ww| 亚洲电影免费观看| 大陆一级毛片免费视频观看| 真正全免费视频a毛片| 亚洲日本一区二区一本一道| 日韩免费高清播放器| 亚洲精品免费在线| 免费黄色大片网站| 男女一进一出抽搐免费视频| 亚洲av鲁丝一区二区三区| 无限动漫网在线观看免费| 国产精品成人亚洲| 国产亚洲真人做受在线观看| 182tv免费视视频线路一二三| 亚洲日韩精品国产3区| 中文字幕人成人乱码亚洲电影 | 成人A级毛片免费观看AV网站| 国产亚洲精品a在线观看 | 免费观看国产网址你懂的| 国产精品亚洲一区二区三区久久| 亚洲中文字幕无码永久在线| 青娱乐免费视频在线观看| 日韩在线一区二区三区免费视频| 久久精品亚洲一区二区三区浴池|