class A {
public static void main(String...args) {
Integer var = 10;
if(var instanceof Character) // Line1
System.out.println("var is a Character");
}
}
Run Code Online (Sandbox Code Playgroud)
我知道第1行不会编译,因为编译器发现它var
不是Character
.
我不明白的是为什么编译器会引发错误,而不是返回的false
或true
.
如果编译器返回false
或true
(instanceof
即将操作视为常规的基于if的验证),那么它会更有用..它不会吗?
还是我错过了一些明显的东西?
ars*_*jii 19
根据JLS§15.20.2,这是一个编译错误:
如果将RelationalExpression转换为ReferenceType将作为编译时错误被拒绝,则
instanceof
关系表达式同样会产生编译时错误.在这种情况下,instanceof
表达式的结果永远不会成立.
RelationalExpression是第一操作数instanceof
和引用类型是第二.