2010-09-28 66 views
1

我已經使用JDK1.6在Eclipse Helios中創建了一個項目/類文件。我讓eclipse爲接口的實現類生成代碼。@Override Snafu

public interface Foo { 
    void bar(); 
} 

public class FooImpl implements Foo { 
    @Override 
    public void bar() { 
    } 
} 

到目前爲止好。現在由於某種原因,我已經在Eclipse中導入了項目,其中有JDK 1.5,我看到錯誤消息The method bar() of type FooImpl must override a superclass method,並且快速修復了刪除'@Override'註釋

谷歌搜索後,我知道有類似OVERRIDE_SNAUF - 其中6.0 Java編譯器已更新,以允許在接口方法實現@Override。

+0

我不是Java方面的專家,但你不覆蓋這些方法,因爲界面沒有提供實現,但我想你自己就明白了。那麼問題是什麼?大聲思考? – Novikov 2010-09-28 05:33:48

+1

問題是什麼?如何在Java 6和Java 5之間獲得一致的行爲。也許檢查http://stackoverflow.com/questions/2135975/can-i-get-java-5-to-ignore-override-errors。但爲什麼你用Java 5的方式? – 2010-09-28 05:54:44

回答

1

@Override適用於在編譯階段檢查覆蓋語法,所以它也適用於接口,我猜也是一樣。

+3

它還引用了接口中方法定義的javadoc,所以javadoc不需要被複制粘貼。耶爲幹! – oksayt 2010-09-28 05:40:08

1

找不到問題,但是 - 您是對的,@Override註釋不允許註釋Java 5中的重寫接口方法。因此,如果要編譯代碼,則必須刪除這些註釋與Java 5.

0

即使您有jdk 1.6,您也可以將您的編譯器選項設置爲合規性級別1.5。這樣eclipse生成的代碼將與java 1.5兼容(它不會在實現接口的方法上添加@Override註釋)。我認爲你實際上可以將它設置爲永遠不會放置@Override註釋。

嗯,實際上它比這更復雜一點。爲了完全兼容,您應該安裝JDK 1.6和JDK 1.5,並將其中的每一個設置爲其合規性級別的默認JDK。這是確保代碼完全向後兼容的最佳方式。

在首選項窗口(通用或特定項目)中,轉到Java-> Compiler並在其中設置合規性級別。在Java-> Installed JRE中添加JDK 1.5,然後在Java-> Installed JREs-> Execution Environments中點擊J2SE-1.5並檢查新安裝的JDK 1.5。這可確保eclipse將使用編譯器行爲以及JDK 1.5附帶的標準庫,前提是您的項目或工作區設置爲使用該合規性級別。