写在前面

本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定Java虚拟机

解答

数组类本身不通过类加载器创建,它是由Java虚拟机直接创建的。

但数组类与类加载器仍然有很密切的关系,因为数组类的元素类型(Element Type,指的是数组去掉所有维度的类型)最终是要靠类加载器去创建,

一个数组类(下面简称为C)创建过程就遵循以下规则: 

1. 如果数组的组件类型(Component Type,指的是数组去掉一个维度的类型)是引用类型,那就递归采用类加载过程去加载这个组件类型,数组C将在加载该组件类型的类加载器的类名称空间上被标识
2. 如果数组的组件类型不是引用类型(例如int数组),Java虚拟机将会把数组C标记为与引导类加载器关联。
3. 数组类的可见性与它的组件类型的可见性一致,如果组件类型不是引用类型,那数组类的可见性将默认为 public。
上一篇 下一篇