有bootstrap,extension,system
系统的classLoad都是AppClassLoader
数组的类加载器就是数组里面的类的加载器
而int,boolean这样的数组的类加载器是null,没有classLoader
而String是bootstrap,所以类加载器也是null
java的核心类库都是由启动类加载的,因为如果自己的加载器加载的话,就会导致有多个版本的类,而且相互不可见,所以这也是为了安全。
java的核心类库不会被自己定义的类给替代,因为启动类首先加载,所以我们自己写的类库是没有机会加载的
extension和system是由bootstrap加载的,bootstrap内建于JVM,是c++编写的
有些加载器是java启动类加载的,而SPI来说,有些接口是java核心库所提供的,而java核心库来自启动类加载器,而这些接口来自不同的jar包,而启动类是不能去加载一些jar包的,所以双亲委托不能满足要求,所以就有了上下文类加载器,可以把接口加载进来。
网友评论