看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