我的印象是,在Java中,由于类型擦除,instanceof
操作符不能用于泛型.但是,下面代码片段中的第一个条件语句编译和运行时没有任何错误.有人能解释为什么第一个条件不会导致编译时错误吗?我正在使用IntelliJ IDEA与Oracle JDK 17.
public class InstanceofTest {
public static class Tea {}
public static class Herb {}
// Why is this working?
public static void main(String[] args) {
List<Tea> teas = new ArrayList<>();
if (teas instanceof List<Tea>) {
System.out.println("TRUE");
} else {
System.out.println("FALSE");
}
// Compile error
// if (teas instanceof List<Herb>) {
// System.out.println("TRUE");
// } else {
// System.out.println("FALSE");
// }
}
}