class A {
public static void main(String...args) {
Integer var = 10;
if(var instanceof Character) // Line1
System.out.println("var is a Character");
}
}
I know Line 1 will not compile because the compiler has found that var
is not a Character
.
What I fail to understand is why the compiler throws an error instead of returning false
or true
.
If the compiler returns false
or true
(i.e treating the instanceof
operation like a regular if-based validation), then it be much more useful.. would it not?
Or am I missing something obvious?
It's a compilation error in accordance with JLS §15.20.2:
RelationalExpression is the first operand of
instanceof
and ReferenceType is the second.In addition to the arshajii's answer if you want to avoid compile-time error and want run-time true/false result for checking whether var is instance of Character then use code like this:
As you would expect it will print: