instanceof 甚至不适用于 List。例如
package org.practice;
import java.util.List;
public class InstanceOfDemo {
public static void main(String[] args) {
Employee emp1 = new Employee(1, "Ram", 10000);
Employee emp2 = new Employee(2, "Shyam", 20000);
Employee emp3 = new Employee(3, "Radha", 30000);
Object obj = List.of(emp1, emp2, emp3);
if (obj instanceof List empList) {
for (Employee emp : empList) { //Type mismatch: cannot convert from element type Object to Employee
System.out.println(emp.getId());
System.out.println(emp.getName());
System.out.println(emp.getSalary());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,instanceof 得到了 true,甚至声明了 empList 被创建了,但这并没有给开发人员带来任何好处,因为在 for 循环中,如果没有类型转换 as ,就无法使用 empList for (Employee emp : (List<Employee>)empList)。如果我们只进行类型转换,然后像传统代码一样对 obj 本身使用类型转换,那么这个功能有什么用。