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目录)下查找文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章