我知道当对象是特定类的实例时,instanceof返回TRUE.例如:
B extends A
C extends A
B b = new B();
C c = new C();
b instanceof A // returns TRUE
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好,所以让我们输入看起来应该返回false的东西:
c instanceof B // won't compile (error: inconvertible types)
Run Code Online (Sandbox Code Playgroud)
这不编译,这是有道理的,因为它允许在编译时捕获疏忽.但是,当DOES instanceof实际返回false时?似乎只有两个选项是TRUE和ERROR.我能想到的唯一例外是:
null instanceof A // returns FALSE
Run Code Online (Sandbox Code Playgroud)
但是通过与上面相同的逻辑,似乎应该在编译时捕获它.
我在这里错过了什么?true/error是唯一可行的选项,还是可以以更有意义的方式实际返回false,除了将null作为引用变量给出?
这是一个评估为false的示例:
class A {}
class B extends A {}
A a = new A();
a instanceof B // false
Run Code Online (Sandbox Code Playgroud)
现场演示:http://ideone.com/cQltqE.
| 归档时间: |
|
| 查看次数: |
4443 次 |
| 最近记录: |