<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;
        }

     

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

    主站蜘蛛池模板: 好爽…又高潮了免费毛片| 久久ww精品w免费人成| 免费网站看v片在线香蕉| 亚洲国产精品yw在线观看| a毛片在线免费观看| 国产亚洲精品免费视频播放| 色欲aⅴ亚洲情无码AV| 国语成本人片免费av无码| 中文字幕在线日亚洲9| 成年女人免费视频播放77777| 国产精品亚洲精品| 最近免费中文字幕视频高清在线看| 亚洲人成电影在线观看网 | a级毛片免费网站| 亚洲午夜av影院| 日批视频网址免费观看| 婷婷亚洲综合五月天小说| 免费看又黄又无码的网站| 亚洲沟沟美女亚洲沟沟| 久久精品网站免费观看| 国产成人亚洲精品无码AV大片| 亚洲欧洲精品成人久久奇米网| 黄色网站软件app在线观看免费| 亚洲AV乱码久久精品蜜桃| 久草视频免费在线观看| 亚洲日韩国产欧美一区二区三区| 国产乱子伦精品免费无码专区 | 日韩视频免费一区二区三区| mm1313亚洲国产精品无码试看| 亚洲熟伦熟女新五十路熟妇| 国产又黄又爽又大的免费视频| 久久精品国产亚洲av水果派 | 青青青国产在线观看免费网站 | 国产亚洲中文日本不卡二区 | 亚洲AV午夜成人影院老师机影院| 131美女爱做免费毛片| 国产a v无码专区亚洲av| 性色午夜视频免费男人的天堂 | 亚洲国产成人影院播放| 女人隐私秘视频黄www免费| 亚洲免费观看网站|