纯学术研究,先看例子。
public static void main(String[] args) { int[] arr1 = new int[1]; int[][] arr2 = new int[1][1]; String[] arr3 = new String[1]; Object[] arr4 = new Object[1]; Class<? extends int[]> class1 = arr1.getClass(); Class<? extends int[][]> class2 = arr2.getClass(); Class<? extends String[]> class3 = arr3.getClass(); Class<? extends Object[]> class4 = arr4.getClass(); System.out.println(class1 == class2);// err System.out.println(class1 == class3);// err System.out.println(class1 == class4);// err System.out.println(class2 == class3);// err System.out.println(class2 == class4); System.out.println(class3 == class4); }
这段代码在jdk1.5之后,注释err的行会编译报错。
Incompatible operand types Class<capture#5-of ? extends int[]> and Class<capture#6-of ? extends
int[][]>
Incompatible operand types Class<capture#7-of ? extends int[]> and Class<capture#8-of ? extends
String[]>
暂时理解的不是很好,先记在这里。