如果我尝试使用错误的类的instanceof运算符我得到一个编译错误("动物不能转换为字符串"),但有一个接口,我没有得到编译时错误.
例如:在第10行,我收到编译错误,因为Animal不是String的子类.但是在第14行中,即使Animal没有实现List接口,我也没有收到编译错误.
class Animal {
}
public class InstanceOf {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Animal a = new Animal();
if (a instanceof String ){ //line 10
System.out.println("True");
}
if (a instanceof List ){ //line 14
System.out.println("True");
}
}
}
Run Code Online (Sandbox Code Playgroud) 在以下示例中
test instanceof java.util.Map返回false
测试instanceof java.util.HashMap无法编译
但
为什么?他们看起来彼此如此相似!
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.HashSet;
public class InstanceofTest {
public static class Test {}
public static void main(String[] args) {
// -- left operand references a Class instance
Test test = null;
// 1. outputs: false
System.out.println(test instanceof Map);
// 2. COMPILATION ERROR
System.out.println(test instanceof HashMap);
// -- left operand references an Interface instance
Map mymap = new HashMap();
// 3. outputs: false …Run Code Online (Sandbox Code Playgroud)