2013-02-23 136 views
1

我有兩個類Foo和Bar,其中Bar擴展Foo。java註釋不調用重寫方法

在超類中,有一個方法f()。該子類重寫此方法並有目的地拋出異常,以便從不在Bar的實例上調用f()。

class Foo { 
    public void f() { 
    // does something useful 
    } 

} 


class Bar extends Foo { 
    @Override 
    public void f() { 
     throw new UnsupportedOperationException("Srsly, thou shalt not"); 
    } 
} 

現在,這裏是我的問題:是有一些註釋,我可以說,以通信的IDE,比如Eclipse,人們不應該把它重寫的方法使用?我發現自己希望輕微濫用@deprecated標記,以便Eclipse 中的自動完成列表在用戶正在處理Bar實例時穿過 的方法,但我想知道是否有更好的選項。

class Bar extends Foo { 

    /** 
    * @deprecated 
    */ 
    @Override 
    public void f() { 
     throw new UnsupportedOperationException("Srsly, thou shalt not"); 
    } 
} 
+1

'UnsupportedOperationException'似乎是最近的事情,但我不認爲有註釋。 – Boann 2013-02-23 02:23:40

+0

你想要打電話的預期方法是什麼?如果是使用super關鍵字調用超類方法。 – Jayamohan 2013-02-23 02:28:52

+0

@Boann我認爲可能是這樣。如果沒有人能夠理解這個問題,你應該把你的評論粘貼到答案中。 – pohl 2013-02-23 02:49:18

回答

-2

無不是真的在Java中所有的(非靜態)方法是虛擬和調用在運行時解析。換句話說,編譯器無法檢測到Bar的版本的方法將在運行時被調用。

+0

我知道你的答案不包含任何不真實的陳述。他們是否以某種方式涉及這個問題? – pohl 2013-03-07 21:51:53

-2

我會使函數f()私有。 那樣的話,它永遠不會被叫到酒吧外面。