2011-07-04 68 views
4

它似乎在註釋中有特殊含義 - 它允許您在創建註釋時跳過參數名稱。'value'是一個java關鍵字嗎?

@Foo(bar = "abc") // a normal instantiation of an annotation 
@Foo("abc") // if bar were renamed 'value' 

這是在哪裏記錄的?是否value是否爲關鍵字? See also

回答

5

這不是一個普通的關鍵字,因爲它沒有在section 3.9 of the JLS中列出。特別是,就我所知,您可以在任何地方將它用作標識符。

通過默認註釋值的使用valuesection 9.7指定:

註解,單元素註釋的第三種形式,是設計用於單元素註釋類型的縮寫:

SingleElementAnnotation: 
    @ TypeName (ElementValue) 

這是正常的註解縮寫:

@TypeName (value = ElementValue) 
3

value是註釋數據放置在其中的默認字段。 value但是不是java關鍵字(感謝提醒@gustafc)。

This is documented,你會希望它是 - 官方文檔,其中規定在:

在具有單個元素的註釋,元素應該被命名爲價值

允許在元素名稱爲值的單元素註釋中省略元素名稱和等號(=)

+0

是的。其他信息:http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html – EinLama

+3

但是,如果我們想要挑剔,'value'不是關鍵字:http://java.sun。 COM /文檔/書籍/ JLS/third_edition/HTML/lexical.html#3.9 – gustafc