2014-06-17 51 views
1

我在IntelliJ中遇到了一個煩人的問題,它在執行接口時將黃色警告線放在我的@Override註釋下面?Intellij Override warnings

enter image description here

任何想法,爲什麼?

乾杯。

編輯:錯誤讀取「'@覆蓋不適用於方法'」。

接口decleration:

public interface Material { 

public long getID(); 

public String getMaterialCode(); 

public String getMaterialShortName(); 

public String getMaterialLongName(); 

}

類減速:

public class StandardMaterial implements Material { 

private long id; 
private String materialCode; 
private String materialShortName; 
private String materialLongName; 

public long getID() { 
    return id; 
} 

@Override 
public String getMaterialCode() { 
    return materialCode; 
} 

@Override 
public String getMaterialShortName() { 
    return materialShortName; 
} 

@Override 
public String getMaterialLongName() { 
    return materialLongName; 
} 

}

(使用Java 8)

enter image description here

+1

將鼠標放在@override上時什麼是intellij消息? intellij不顯示不必要的錯誤。它應該是代碼中的問題 –

+1

您的項目是否被設置爲Java 1.5兼容性? –

+0

鼠標懸停在「@ Override」上時顯示的消息是什麼? –

回答

1

只有java 6和更高版本才支持接口的覆蓋註釋。

檢查intellij是否使用正確的jdk和語言級別,以及maven(或者您在intellij之外使用的任何構建工具)。檢查你是否沒有重寫這個particualr模塊的項目sdk。

0

不要手動編寫您的方法。你能創建一個StandardMaterial類,它實現了一個Material接口,然後ctrl + space自動生成實現的方法嗎?另外,您的getID方法沒有覆蓋註釋。

3

如果它是一個maven項目,請確保在pom.xml中有一個maven-compiler-plugin的定義,其中您明確地將編譯和源級別設置爲至少1.6。

例如:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
</plugin> 

,缺省值爲1.5,從而@Override尚不可用。即使沒有指定,Intellij Idea似乎也會評估編譯器插件。