Java 中***.class.getResource(name) 與***.class.getClassLoader().getResource(name)的區別

***.class.getResource(name) 與***.class.getClassLoader().getResource(name)都是Java中獲取資源的方法。

  • 相同點:

        ***.class.getResource(name) 與***.class.getClassLoader().getResource(name)都返回java.net.URL來表示資源的路徑,URL.getFile()方法獲取文件的絕對路徑。

  • 不同點:
  1. ***.class.getResource(name) ,如果name是以'/'開頭,那麼jvm會到當前項目的classpath(classes目錄)下查找資源,否則,jvm會在當前類的包下查找文件。如果文件不存在則返回null,存在返回java.net.URL來表示資源的路徑。
  2. ***.class.getClassLoader().getResource(name),   這個方法首先會使用這個類的父類加載器查找資源,如果父類加載器爲null,將在BootstrapClassPath下查找資源,如果失敗,將會調用ClassLoader的findResource()方法查找資源,這取決於具體的ClassLoader實現。對於name參數不加‘/’,會在這個類的classpath下查找文件。例如Test.class.getgetClassLoader().getResource(name)會在Test類所在的classpath(classes目錄)下查找文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章