下载桌面端
进入网页版

登录/ 注册

万兴科技(300624.SZ)集团成员

JDK getResource流程图

立即使用

App ClassLoaderExtension ClassLoaderBootstrap ClassLoadergetResource(name)classloader.getResource(name)返回截取当前/后的name是否资源名称以/开头获取当前类的getName,截取掉类名留下包名并拼接资源nameresolveName(name)父classloader是否为空parent.getResource(name)调用父classloader的getResource(name)方法getBootstrapResource(name)调用BootStrapClassLoader的资源获取备注:此处依旧遵循双亲委派模型,默认的资源加载依旧交予父classloader去加载资源,如果父classloader没根据当前name加载到资源路径,才会继续交由当前的classloader去加载获取的资源url是否为空获取到url,并返回当前classloader的findResource(name)结束URLClassLoader.findResource(name)URLClassPath.findResource(name)URLClassPath.getLookupCache(name)返回索引数组用于查找可能包含指定的资源URLClassPath.getNextLoader(cache, index)获取下一个用于加载资源的Loadercache缓存是否为空loaders.get(intcache[index])获取加载资源的LoaderURLClassPath$Loader.getLoader(int index)URLClassPath$Loader.getLoader(URL url)用于获取加载资源的loaderfile != null && file.endsWith("/")url.getProtocol()协议是file则构建FileLoader:new FileLoader(url);new JarLoader(url, jarHandler, lmap);使用JarLoaderURLClassPath$JarLoader.findResource()查找资源URLClassPath$FileLoader.findResource()查找资源URLClassPath$getResource(String name,boolean check)获取资源的URLURLClassPath$JarLoader.getResource(String name,boolean check)获取资源的URLClass.getResource(String name)实现获取加载资源的Loader是否是JarLoaderUserApp ClassLoaderUserApp ClassLoaderJDK getResource(String name)流程图
420
2
7
发布时间: 2021-04-21