2010-01-25 65 views
10

可能重複:
Why does Eclipse complain about @Override on interface methods?我可以讓Java 5忽略@Override錯誤嗎?

我有一個使用Eclipse和Java 6 SDK編寫一些Java代碼,以便實現接口中的方法與@Override註解 - 一個註解,在Java 6中是合法的,但在Java 5中不合法。

我想使用Java 5 SDK(在Mac OS X 10.5上爲javac)編譯相同的代碼。除了@Override註釋之外,所有內容都編譯並運行正常。有沒有什麼辦法可以讓javac忽略這個項目的@Override註解,或者是唯一的解決方案來刪除它們?

回答

4

顯然,你可以升級到Java 1.5 U21,這將解決該問題:

Why is javac failing on @Override annotation

+0

我讀過這個問題,它的所有答案都是這樣的,它沒有針對JDK 1.5u21和1.5u22進行驗證,請參閱http://stackoverflow.com/questions/2335655/why-is-javac-failing-on-override-annotation #comment3379487_2335752 – 2016-10-18 11:41:59

6

不幸的是,唯一的方法是實際刪除註釋。

如果您確實希望您的代碼能夠編譯並與Java 5一起運行,那麼您應該開發針對Java 5的工作。否則,您可能會意外地依賴於Java 6特定的SDK方法等。

+0

人們可以很容易地通過一個預處理步驟但是將其刪除。 – 2010-01-25 22:05:34

-1

@Override是有效的Java 5中 - >http://java.sun.com/j2se/1.5.0/docs/api/index.html?java/lang/Override.html

我建議您檢查在Eclipse項目的編譯器設置,或許在工程 - >編譯器 - >錯誤/警告 - >註解?

+0

+1 - 我打算說同樣的事情。我也使用@Override,而且我仍然使用jdk 1.5。 – PSpeed 2010-01-25 22:10:36

+8

@覆蓋的語義在Java 5和6之間發生了變化 - 在5中,它在實現接口的方法上使用時導致編譯器錯誤。在6中,當* not *用於這種方法時會引起警告。問題是如何處理這種差異。 – 2010-01-25 22:16:03

+0

是@Override在Java 5中是有效的。但是對於Java6,規範已經發生了變化。在Java6中,您可以瞭解實現接口方法的註釋方法。這在Java6中是不可能的。 – 2010-01-25 22:17:36

-1

Java 6可用於OS X.請檢查軟件更新。當你有它的時候,把它設置爲默認的java版本,然後編譯。

+0

這不是一個真正的解決方案,當他想要定位Java 5以及。 – 2010-01-25 22:28:27

+0

你迴避了OP的問題。 – akuhn 2010-01-25 23:12:12

2

您可以使用JDK6編譯1.5代碼。使用-bootclasspath,-target-source。另外,我相信Eclipse編譯器將@Override視爲相同(這可能是錯誤的!)。

1.5已完成使用壽命期限,我建議讓它腐爛。

+0

+1用於提示-target和-source。看看它是否有效會很有趣。 – 2010-01-25 22:54:54

+0

這個工作,你嘗試過嗎? ^^ – akuhn 2010-01-25 23:15:07

相關問題