I found a minor issue on openjdk-7u40 sources. Is this the right place to discuss such things and if not could you please give me a hint on where this right place is? I am really lost trying to find the right place to open the issue. The issue itself is laid below.
Redundant downcast to java.lang.Object is made in method copyOf(U[] original, int newLength, Class<? extends T[]> newType) (line 2245): 2244 public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { 2245 T[] copy = ((Object)newType == (Object)Object[].class) 2246 ? (T[]) new Object[newLength] 2247 : (T[]) Array.newInstance(newType.getComponentType(), newLength); 2248 System.arraycopy(original, 0, copy, 0, 2249 Math.min(original.length, newLength)); 2250 return copy; 2251 } Actually, we need only to downcast one of the operands in order to avoid compiler complaints about incomparable types. The patch can look like this: - 2245 T[] copy = ((Object)newType == (Object)Object[].class) +2245 T[] copy = ((Object)newType == Object[].class) Regards, Alex Yursha