Java中的instanceof - 为什么不编译?

Und*_*Dog 18 java instanceof

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.

我不明白的是为什么编译器会引发错误,而不是返回的falsetrue.

如果编译器返回falsetrue(instanceof即将操作视为常规的基于if的验证),那么它会更有用..它不会吗?

还是我错过了一些明显的东西?

ars*_*jii 19

根据JLS§15.20.2,这是一个编译错误:

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

RelationalExpression是第一操作数instanceof引用类型是第二.