Class.getResource和ClassLoader.getSystemResource:是否有理由相互选择?

vit*_*aut 32 java resources

我看到了两者Class.getResourceClassLoader.getSystemResource习惯在Java中找到资源.有什么理由喜欢彼此吗?

Sri*_*nan 40

有几种方法可以加载资源,每种方法的含义略有不同 -

ClassLoader::getSystemResource()使用系统类加载器.这使用用于启动程序的类路径.如果您位于诸如tomcat之类的Web容器中,则不会从WAR文件中获取资源.

Class<T>#getResource()将类的包名称添加到资源名称,然后委托给其类加载器.如果资源存储在镜像类的包层次结构中,请使用此方法.

ClassLoader#getResource()委托给它的父类加载器.这将最终搜索资源一直到系统类加载器.

如果你感到困惑,那就坚持下去 ClassLoader#getResource()