***.class.getResource(name) 與***.class.getClassLoader().getResource(name)都是Java中獲取資源的方法。
- 相同點:
***.class.getResource(name) 與***.class.getClassLoader().getResource(name)都返回java.net.URL來表示資源的路徑,URL.getFile()方法獲取文件的絕對路徑。
- 不同點:
- ***.class.getResource(name) ,如果name是以'/'開頭,那麼jvm會到當前項目的classpath(classes目錄)下查找資源,否則,jvm會在當前類的包下查找文件。如果文件不存在則返回null,存在返回java.net.URL來表示資源的路徑。
- ***.class.getClassLoader().getResource(name), 這個方法首先會使用這個類的父類加載器查找資源,如果父類加載器爲null,將在BootstrapClassPath下查找資源,如果失敗,將會調用ClassLoader的findResource()方法查找資源,這取決於具體的ClassLoader實現。對於name參數不加‘/’,會在這個類的classpath下查找文件。例如Test.class.getgetClassLoader().getResource(name)會在Test類所在的classpath(classes目錄)下查找文件。