假设我在某个类中调用this.getClass().getResource()
以获取文件的URL。
getResource()
从哪里开始寻找?在项目的主src
文件夹中?在主包文件夹中?什么是'根文件夹'对于getResource()
方法?
我总是对这种方法感到困惑,如果有人解释了这个方法会很棒。
答案 0 :(得分:1)
Class.getResource()
找到具有给定名称的资源。搜索与给定类关联的资源的规则由类的定义类加载器实现。
在委托之前,使用此算法从给定的资源名称构造绝对资源名称:
如果名称以'/' ('\u002f')
开头,则资源的绝对名称是' /'后面的名称部分。
否则,绝对名称的格式如下:
modified_package_name/name
modified_package_name
是此对象的包名称,其中'/'
替换为'.' ('\u002e')
。
ClassLoader
类使用委派模型来搜索类和资源。 ClassLoader
的每个实例都有一个关联的父类加载器。当请求查找类或资源时,ClassLoader
实例会在尝试查找类或资源本身之前将对类或资源的搜索委托给其父类加载器。虚拟机的内置类加载器,称为"引导类加载器",本身不具有父级,但可以作为ClassLoader
实例的父级。
read越多,学的越多:)