我想下面的代碼將編印「否」爲什麼會出現在此的instanceof測試編譯錯誤
class One{
public static void main(String[] args) {
One o = new One();
if(o instanceof Two) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
class Two { }
但它扔我一個編譯器錯誤,指出inconvertible types
應該不是instanceof
運營商檢查如果對象是在傳承層次,如果是返回true
和false
如果沒有
編輯:
如果編譯器已經知道某個條件永遠無法真正的情況下,它拋出一個編譯器錯誤,這是爲什麼代碼編譯
if(false) {
System.out.println("Yes");
}
因爲它可以從類名中得知答案是錯誤的。聲明o是一個對象(但仍然創建一個)。 'Object o = new One();' –
@fvrgl:我沒有看到那篇文章,我的不好。但你能看到我的編輯並提供解釋嗎? –
您沒有違反if(false)情況下的任何規則。 –