I\'m reading this:
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.20.2
They say:
Consider the example program
instanceof
check is a runtime check. The compiler is able to discover that this condition is incorrect at compile time (much earlier), so it tells you that it is wrong. Always remember, that failing fast is a good practice, it will save you a lot of time and nerves.
Because of the inheritance tree. if A inherited from B then you can write A instance of B
Integer i = 3;
System.out.println(i instanceof String); // compile time error
System.out.println(i instanceof Number); // true
System.out.println(i instanceof Object); // true
I'd say, because you know at compile-time that it will never be true. Therefore, it's safe to assume this is not what the programmer meant :)
However, there probably is a more java-technical explanation.
Because the compiler knows that is impossible to an Element be a Point, so you get an compilation error.