3 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
你應(yīng)該盡可能使用@Override。它可以防止出現(xiàn)簡(jiǎn)單的錯(cuò)誤。例:
class C {
@Override
public boolean equals(SomeClass obj){
// code ...
}
}
這不會(huì)編譯,因?yàn)樗鼪]有正確覆蓋public boolean equals(Object obj)。
對(duì)于實(shí)現(xiàn)接口(僅限1.6及更高版本)或覆蓋超類的方法的方法也是如此。

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
我相信javac的行為已經(jīng)改變了 - 用1.5它禁止了注釋,而1.6則沒有。注釋提供額外的編譯時(shí)檢查,所以如果你使用1.6,我會(huì)去做。

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果方法@Override
可用,您應(yīng)該始終注釋方法。
在JDK 5中,這意味著重寫超類的方法,在JDK 6和7中,它意味著重寫超類的方法,并實(shí)現(xiàn)接口的方法。如前所述,原因是它允許編譯器捕獲您認(rèn)為重寫(或?qū)崿F(xiàn))方法的錯(cuò)誤,但實(shí)際上是定義了一個(gè)新方法(不同的簽名)。
所述equals(Object)
對(duì)比equals(YourObject)
例子就是一個(gè)標(biāo)準(zhǔn)的情況下,但相同的參數(shù)可以用于接口實(shí)現(xiàn)制成。
我想象一下,注釋接口的實(shí)現(xiàn)方法并不是強(qiáng)制性的原因是JDK 5將此標(biāo)記為編譯錯(cuò)誤。如果JDK 6強(qiáng)制使用此注釋,則會(huì)破壞向后兼容性。
我不是Eclipse用戶,但在其他IDE(IntelliJ)中,@Override
只有在項(xiàng)目設(shè)置為JDK 6+項(xiàng)目時(shí),才會(huì)在實(shí)現(xiàn)接口方法時(shí)添加注釋。我認(rèn)為Eclipse是類似的。
但是,我更希望看到這種用法的不同注釋,可能是@Implements
注釋。
添加回答
舉報(bào)