class.getResource() class.getClassLoader.getResource()之间的区别
使用*.class.getResouce()和*.class.getClassLoader.getResource()是有一定的区别的。
在maven,gradle等构建工具构建的项目,resouces文件夹下的内容默认在classpath下面。
所以可以直接用this.class.getClassLoader.getResource(...)来获取对应的文件。
Class与ClassLoader.getResource()之间的区别
使用*.class.getResouce()和*.class.getClassLoader.getResource()是有一定的区别的。
*.class.getResouce()先会resolveName(name)然后在委托给classLoader来处理。所以区别主要在于resolveName(name)。 resolveName(name)主要是功能是:若name以/开头,那么则直接调用classLoader来处理。若没有以/开头,则会将类全名中的点替换成/作为路径再加上name委托给classLoader来处理。
所以要获取resources文件夹下的内容,*.class.getResouce(name)中的name要以/开头。而this.class.getClassLoader.getResource(...)不需要。
1 | public java.net.URL getResource(String name) { |
