java – 为什么`instanceof`错误而不是在用于2个不兼容的类时返回`false`?

前端之家收集整理的这篇文章主要介绍了java – 为什么`instanceof`错误而不是在用于2个不兼容的类时返回`false`?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在读这个:
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.20.2

他们说:

Consider the example program:

class Point { int x,y; }
class Element { int atomicNumber; }
class Test {
        public static void main(String[] args) {
                Point p = new Point();
                Element e = new Element();
                if (e instanceof Point) {       // compile-time error
                        System.out.println("I get your point!");
                        p = (Point)e;           // compile-time error
                }
        }
}

The instanceof expression is incorrect because no instance of Element or any of its possible subclasses (none are shown here) could possibly be an instance of any subclass of Point.

为什么这会导致错误,而不是简单地在返回false的情况下?

谢谢,

JDelage

解决方法

instanceof check是运行时检查.编译器能够在编译时发现这个条件不正确(更早),因此它告诉你它是错误的.永远记住,快速失败是一种很好的做法,它会为你节省大量的时间和精力.

猜你在找的Java相关文章