本文介绍了java中的instanceof运算符用于比较不同的类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图了解Java中的instanceof运算符是如何工作的并且面临一个非常奇怪的问题。

I was trying to see how instanceof operator in Java works and am facing a very odd issue.

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

上述内容按预期返回false。但是,

The above returns false as expected. However,

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

这甚至都没有编译。我收到错误

This does not even compile. I get an error

inconvertible types
found   : java.util.HashMap
required : java.util.Date

我在这里缺少什么?
我正在使用IntelliJ Idea 11.

What am I missing here?I am using IntelliJ Idea 11.

推荐答案

来自Java语言规范3.0,第15.20.2节:

From the Java Language Specification 3.0, section 15.20.2:

因为你可以不能将 HashMap 中的演员表编译成日期,你无法编译 instanceof 在两者之间进行测试。

Since you can't compile a cast from a HashMap to a Date, you can't compile an instanceof test between the two either.

这篇关于java中的instanceof运算符用于比较不同的类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-12 08:28