当前位置:编程学习 > JAVA >>

看jdk代码时有疑问?

刚刚看ArrayList的初始化代码,跟踪到Arrays.copyOf()时,发现代码看不懂了,求大家指点指点,具体代码如下:


    public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
        T[] copy = ((Object)newType == (Object)Object[].class)
            ? (T[]) new Object[newLength]
            : (T[]) Array.newInstance(newType.getComponentType(), newLength);
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
    }



疑问一:
((Object)newType == (Object)Object[].class)

这里为什么要将class对象转换成Object,然后比较?

疑问二:
(T[]) new Object[newLength]和(T[]) Array.newInstance(newType.getComponentType(), newLength);在这里有什么区别吗? java jdk arraylist 对象 class
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,