数组类的加载

对于数组实例来说,其类型是由JVM运行期动态生成的,表示为[[Lcom.shengsiyuan.jvm.classloader.MyParent4;这种形式
动态生成的类型,其父类型是Object。

对于数组来说,JavaDoc经常将构成数组的元素为Component,实际上就是将数组降低一个维度后的类型。但是数组类与类加载器仍然又很密切的关系,因为数组类的元素类型(ElementType,指的是数组去掉所有维度的类型)最终是要靠类加载器去创建。

public class MyTest4 {
    public static void main(String[] args) {
        MyParent4[] myParent4s = new MyParent4[1];

        System.out.println(myParent4s.getClass());//class [Lcom.shengsiyuan.jvm.classloader.MyParent4;
        System.out.println(myParent4s.getClass().getClassLoader());//sun.misc.Launcher$AppClassLoader@18b4aac2

        System.out.println("========");

        MyParent4[][] myParent4s1 = new MyParent4[1][1];
        System.out.println(myParent4s1.getClass());//class [[Lcom.shengsiyuan.jvm.classloader.MyParent4;
        System.out.println(myParent4s.getClass().getSuperclass());//class java.lang.Object

        System.out.println("========");

        int[] ints = new int[1];
        System.out.println(ints.getClass());//class [I
        System.out.println(ints.getClass().getSuperclass());//class java.lang.Object
    }
}

class MyParent4{
    static {
        System.out.println("Myparent4 static code");
    }
}

你可能感兴趣的:(数组类的加载)