List and List < ? >
不一样,但在这种情况下,当您使用instanceof运算符时,它们的含义相同。
instanceof不能与泛型一起使用,因为泛型在运行时不存储任何类型信息(由于擦除实现)。
这一点可以通过以下主要方法清除。我已经声明了两个列表(一个是整数类型,另一个是字符串类型)。并且instanceof的行为相同List and List < ? >
public static void main(String[] args){
List<Integer> l = new ArrayList<Integer>();
List<String> ls = new ArrayList<String>();
if(l instanceof List<?>){
System.out.print("<?> ");
}
if(l instanceof List){
System.out.print("l ");
}
if(ls instanceof List<?>){
System.out.print("<?> ");
}
if(ls instanceof List){
System.out.print("ls ");
}
}
输出是:
<?> l <?> ls
在上面的 main 方法中,所有 if 语句都为真。所以很明显,在这种情况下List and List<?>
是相同的。