我知道當對象是特定類的實例時,instanceof返回TRUE。例如:什麼時候instanceof返回FALSE?
B extends A
C extends A
B b = new B();
C c = new C();
b instanceof A // returns TRUE
到目前爲止好,讓我們進入的東西會像它應該返回false:
c instanceof B // won't compile (error: inconvertible types)
這並不編譯,這是有道理的,因爲它允許監督,在編譯時被捕。但是,當DOES instanceof實際返回false?看來只有兩個選項是TRUE和ERROR。我能想到的唯一的例外是:
null instanceof A // returns FALSE
但通過與上述相同的邏輯,似乎本應在編譯時被捕獲爲好。
我在這裏錯過了什麼?真/假是唯一的實際選擇,還是有可能以更有意義的方式實際返回false,除了將null指定爲參考變量?
這是狩獵的拼寫檢查器。考慮上面的僞代碼。 ;) – abc32112
[''instanceof'運算符用於什麼?](http://stackoverflow.com/questions/7313559/what-is-the-instanceof-operator-used-for) –
'(Object) c instanceof B'會編譯。 'c instanceof B'沒有編譯的原因是編譯器可以靜態確定對'C'的引用永遠不可能是'B'。 – Radiodef