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