java中的instanceof运算符用于比较不同的类

Ank*_*gra 10 java instanceof

我试图看看Java中的instanceof运算符是如何工作的,并且面临着一个非常奇怪的问题.

public static void main(String[] args) {
    Map m = new HashMap();
    System.out.println("m instanceof Date: " + (m instanceof Date));
}
Run Code Online (Sandbox Code Playgroud)

以上内容按预期返回false.然而,

public static void main(String[] args) {
    HashMap m = new HashMap();
    System.out.println("m instanceof Date: " + (m instanceof Date));
}
Run Code Online (Sandbox Code Playgroud)

这甚至都没有编译.我收到一个错误

inconvertible types
found   : java.util.HashMap
required : java.util.Date
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我正在使用IntelliJ Idea 11.

Ada*_*cin 10

从Java语言规范3.0,第15.20.2节:

如果将RelationalExpression转换为ReferenceType将作为编译时错误被拒绝,则关系表达式的实例同样会产生编译时错误.在这种情况下,instanceof表达式的结果永远不会成立.

由于您无法将转换从a编译HashMap为a Date,因此无法instanceof在两者之间编译测试.