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

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...