在下面的例子中:
test instanceof java.util.Map 返回false
test instanceof java.util.HashMap 不会编译
但是
- mymap instanceof Set 返回false 并且
- mymap instanceof HashSet 返回false(为什么它会编译?!)
为什么?它们看起来很相似啊!
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
System.out.println(mymap instanceof Set);
// 4. outputs: false
System.out.println(mymap instanceof HashSet);
}
}