.class.getResource() 和 .class.getClassLoader().getResource() 的区别

转载文章

总结:

  • .class.getResource() 和 .getClassLoader().getResource() 的区别,就是在加载资源文件的时候,加载方式的不同。
  • .class.getResource("/") == .class.getClassLoader().getResource("")
    两者都是从ClassPath根下任意路径获取资源。.class.getResource()最终调用.class.getClassLoader().getResource()方法。
  • .class.getResource真正调用.class.getClassLoader().getResource()方法之前,会先获取文件的路径(path不以’/‘开头时,默认是从此类所在的包下取资源;path以’/'开头时,则是从项目的ClassPath根下获取资源)
  • .class.getClassLoader().getResource()方法会通过双亲委派机制,先委派双亲去加载类,如果双亲没有加载到,则再由自己加载。(双亲委派机制并不是通过继承实现的,而是通过组合的方式实现)
  • 当 .class.getClassLoader().getResource()方法的 path 以 ‘/’ 开头时,是从BootstrapClassLoader的加载范围加载,一定是返回null。
  • BootstrapClassLoader称为启动类加载器,是用C/C++编写的,它并不是一个JAVA类,也就是无法在java代码中获取它的引用。是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,如:rt.jar、resources.jar、charsets.jar等,他的父类加载器为null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值