2010-03-22 224 views
7

您可以在不使用註釋的情況下覆蓋java中的方法嗎?因爲如果您使用JRE6,eclipse不支持它,您需要切換回5以使用@Override註釋。如果我刪除了註釋,這個方法會被覆蓋嗎?覆蓋方法

@Override public String toString() { 
    return name + " [" + genre + "]"; 
    } 
+4

「eclipse不支持它,如果你使用JRE6」 - 這是不正確的,是什麼給了你這個想法? – skaffman 2010-03-22 09:38:33

+0

@skaffman,這是我從http://i39.tinypic.com/dw5lj5.png得到的想法 – 2010-03-22 09:56:08

+1

*微笑* - 這只是表明,您的項目的當前源級別是<1.5。這個設置與JRE非常獨立,你實際上可以將JRE 1.6與源代碼級別1.4一起使用 - 我想,這就是發生了什麼。 – 2010-03-22 10:00:33

回答

8

你可以重寫java 中的方法而不使用註釋嗎?

是的,@Override註釋不需要重寫方法。

僅僅通過具有祖先類的相同方法簽名的方法定義的行爲足以覆蓋方法。

@Override註釋只是提醒編譯器說方法定義是爲了覆蓋方法。

如果具有@Override的方法實際上並未覆蓋某個方法,則編譯器將引發一個編譯器錯誤 - 該註釋將用作額外的編譯時檢查以查看方法定義是否確實覆蓋了方法。

因爲如果 您使用JRE6,你需要切換 5使用@Override批註日食不支持它。

我碰巧使用Eclipse目標Java 6中,並且我能夠使用@Override註解,所以我不太清楚什麼可以導致此。註釋已經從Java 5的支持,因爲Java的6

編輯已經被更緊密地集成到語言

從Andreas_D對問題的評論:

微笑 - 這只是表明, 的 當前源級別爲< 1.5。這個設置相當於從JRE獨立的 ,你實際上 可以使用JRE 1.6連同源 級別1.4 - 我猜,這就是 發生了什麼。

這個確定似乎是編譯錯誤發生的一種方式!

以檢查「編譯器遵從水平」的Java 5下設置的東西的方式,

  1. 轉到屬性的Java項目的在Eclipse
  2. 然後,轉到Java編譯器菜單
  3. 檢查編譯器符合水平設置爲1.5或更高。

編輯

關於甘道夫StormCrow的截圖,顯示了編譯器符合性水平比JDK 1.5設置較低。點擊將項目符合性和JRE更改爲1.5快速修復應修復當前情況。

的問題,註釋是在Java中引入了5

看來,Eclipse的Java項目目前設定的源代碼只能包含這是Java 5之前引入的功能,因此禁止使用的註釋。

修復情況的方法是告訴Eclipse從Java 5的特性,可以使用由編譯器遵從性級別設置爲1.5或更高。

+0

@coobird這裏是我的意思是http: //i39.tinypic.com/dw5lj5.png – 2010-03-22 10:06:11

3

@override只是一種確保如果您更改合約(方法重寫)的方法,此方法將無法編譯。沒有它,它將被視爲一個不同的功能。

至於JRE6,我不確定你的意思:支持註釋。

試試jdk?

0

您不需要使用@Override註釋。但是,如果你這樣做,並且該方法無法覆蓋超類中的方法,那麼編譯器將返回一個錯誤。