2011-09-16 93 views
2

應該將Java註釋視爲語言或庫特徵。我不是指註釋這個顯然是語言功能的概念,而是特定的註釋,例如@Override和@Deprecated?java註釋 - 庫或語言功能?

似乎更清楚的是,僅由第三方庫(例如Hibernate註釋)支持的註釋顯然不是Java語言的一部分,但對於內置註釋,我並不確定。

如果這被認爲太散漫,隨意移動到programmers.stackexchange.com

回答

2

這裏是我如何看待它:

boolean isLanguageFeature(foo) 
{ 
    return JLS.contains(foo) 
} 

的JLS描述了一個Java 編程語言。正如您清楚地瞭解的那樣,註釋的概念是語言功能。另一方面,JLS中沒有描述大量的標準Java庫功能,例如Collections API。

JLS §9.6.1, Predefined Annotation Types

幾個註釋類型在Java平臺的庫預定義。其中一些預定義的註釋類型具有特殊的語義。這些語義在本節中指定。本節不提供此處包含的預定義註釋的完整規範;這是適當的API規範的作用。這裏僅指定那些需要Java編譯器或虛擬機部分具有特殊行爲的語義。

想到這些,那麼,我會說Java註釋是功能。

-1

註解使用(在Java中)添加元數據到您的代碼。註釋是編寫可讀和可維護代碼的方式。因此,爲了編寫好的代碼使用註釋,天氣他們是Java註釋或任何其他第三方。

例如,現在只需要添加@Stateless註釋就可以使EJB成爲無狀態。

+2

我認爲他的問題與Java註釋的本質有關,而不是它們是什麼或何時應該使用它們。 –

+0

同意@tke。 OP清楚地理解如何以及爲什麼使用註釋。這個答案忽略了這個問題,完全不能以任何方式作出結論。 –

2

註解喜歡@Deprecated@Override的數據庫功能,發生由語言工具來實施和/或描述代碼的行爲。絕對的圖書館功能。

+0

我同意你的意見,但你實際上沒有提供任何支持論點。 –

+2

他們在標準的Java庫中。根據定義,它們是庫特徵。我想,我並不強烈需要支持這一點。 –

+0

支持參數:'@ Override'可能是標準註釋中語言最多的語言。然而,如果你編寫了一個可以完全忽略這個註釋的替代Java編譯器,那麼所得到的代碼將會與'javac'產生的代碼完全相同。 (假設它首先是正確的)。註釋可以改變代碼行爲的唯一方法是如果庫(如Hibernate)使用字節碼增強器來處理它們。 – millimoose