<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文萃 閱讀(294) 評論(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香蕉国产线观看免费全集 | 久久亚洲精品无码| 久久久久女教师免费一区| 午夜亚洲WWW湿好爽| 夫妻免费无码V看片| 亚洲区小说区图片区QVOD| 巨胸狂喷奶水视频www网站免费| 亚洲成人免费在线观看| 精品日韩亚洲AV无码| 在线播放免费人成视频网站| 日本免费人成在线网站| 亚洲人精品午夜射精日韩| 成全视频高清免费观看电视剧| 亚洲精品无码不卡在线播放HE| 国产一区二区免费视频| 亚洲综合激情视频| 久久综合九色综合97免费下载| 亚洲另类激情综合偷自拍 | 亚洲手机中文字幕| a一级爱做片免费| 亚洲精品国产精品乱码在线观看| 久久久国产精品福利免费| 亚洲春色在线观看| 免费观看国产小粉嫩喷水| 亚洲老熟女五十路老熟女bbw| 日韩免费观看的一级毛片| 本道天堂成在人线av无码免费| 国产亚洲精品va在线| 国色精品卡一卡2卡3卡4卡免费| 亚洲AV永久无码精品一福利| 亚洲人成中文字幕在线观看| 妻子5免费完整高清电视| 人妻无码中文字幕免费视频蜜桃| 国产国产人免费视频成69大陆| 久久久久久av无码免费看大片| 亚洲成a人片在线观看中文动漫 | 91九色精品国产免费| 久久久久久亚洲Av无码精品专口| 成人女人A级毛片免费软件| 亚洲美女精品视频|