java为什么instanceof听上去不工作?
在Java中,instanceof
运算符仅在比较null
时返回false
。如果测试的引用变量不是所需类型,则程序无法编译。
这个操作符是否只有效地测试引用是否为null
?还是我没想到还有别的用途
如果不是,为什么不称之为isNull
或更具描述性的东西呢
你可以在下面搜索框中键入要查询的问题!
在Java中,instanceof
运算符仅在比较null
时返回false
。如果测试的引用变量不是所需类型,则程序无法编译。
这个操作符是否只有效地测试引用是否为null
?还是我没想到还有别的用途
如果不是,为什么不称之为isNull
或更具描述性的东西呢
# 1 楼答案
instanceof
在对其右侧的类的实例或任何派生类使用时返回true。否则将返回false上述代码不会引发任何异常。不过,以下几点可以:
希望这有帮助
# 2 楼答案
请注意,在大多数情况下,多态性可以避免使用实例
# 3 楼答案
当您有一个超类类型引用,并且希望检查该对象是否是某个子类的实例时,它很有用:
例如
# 4 楼答案
如果比较永远不可能是真的,那么它就无法编译。例如:
这不会编译,因为编译器知道字符串永远不能是数字。运算符的作用与预期完全相同:它测试操作数是否为指定类型的实例
测试空引用时返回false是为了使代码更简单、更可读。它可以防止您需要这样做:
阅读本文了解操作符:http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.20.2
# 5 楼答案
我不确定您是如何得出结论的,但当第一个操作数的运行时类型与第二个操作数指定的类型不匹配时,
instanceof
操作将导致false
比如
…打印“false”,因为t1是
String
,而不是Number
或其子类之一你能举一个编译失败的
instanceof
操作的例子吗?这很可能是由于语法错误造成的