2011-11-22 66 views
13

我正在寫各執行所謂的命令的接口,其中包含的方法isValid()run()一個Java類,如下所示:的Java的Eclipse @覆蓋錯誤

public class DailyEnergy implements Command { 

    @Override 
    public boolean isValid(String command) { 
    return false; 
    } 

    @Override 
    public void run(String command) throws Exception { 
    } 
} 

和這裏的Command.java文件:

public interface Command { 

    public boolean isValid(String command); 
    public void run(String command) throws Exception; 
} 

在這一類中,我實現了超類方法isValid()run(),我想添加@Override註解,但是Eclipse給出了一個錯誤,指出「該方法必須overrid e超類方法「。

即使我拿出的方法和與Eclipse自動導入他們,如果我添加註釋,我得到的錯誤。如果有人可以說明爲什麼我不能使用@Override註釋,那將不勝感激。

+0

您是否可以將您的代碼複製並粘貼到問題中? –

回答

46

自Java-6以來,支持接口實現的@Override註釋。你可能在Java-5上? Oracle has acknowledgedJava 6 docs中出現混亂。它一直是corrected in Java-7。見下面的例子:

Check compiler setting

+2

不,我使用的是Java 6中,不是5 – TNC

+5

我會再次檢查項目的和/或缺省Eclipse JDK未設置爲JDK 5 –

+0

我的媽呀,你是對的,這就是問題所在。我猜的Eclipse默認爲JDK 5,因爲我從未有過的Java 5在任何時候安裝..奇怪,因爲我發誓我從來沒有過這樣的問題。但無論如何,非常感謝你! – TNC

2

你使用JDK5? 正如我記住的那樣,這是JDK5中的一個錯誤。在JDK5的接口的實現中不允許使用@override