'value'是一个java关键字吗?

时间:2011-07-04 12:58:18

标签: java annotations

它似乎在注释中具有特殊含义 - 它允许您在实例化注释时跳过参数名称。

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

这在哪里记录? value是否为关键字? See also

3 个答案:

答案 0 :(得分:6)

不,value 是Java中的关键字。如果只为注释指定了一个参数,并且该注释只有一个名为value的元素,则在使用注释时可以省略名称value。注释在这里解释: http://download.oracle.com/javase/1.5.0/docs/guide/language/annotations.html 并在JLS中的section 9.7中进行了记录:

答案 1 :(得分:5)

这不是常规关键字,因为它未列在section 3.9 of the JLS中。特别是,据我所知,您可以随意使用它作为标识符。

默认情况下,value对注释值的使用在section 9.7中指定:

  

第三种注释形式,即单元素注释,是一种设计用于单元素注释类型的速记:

SingleElementAnnotation:
   @ TypeName ( ElementValue )
     

它是正常注释的简写:

   @TypeName ( value = ElementValue )

答案 2 :(得分:3)

value是注释数据所在的默认字段。 value但不是java关键字(感谢提醒@gustafc)。

This is documented你可以期待它 - 在官方文件中说明:

  

在具有单个元素的注释中,该元素应命名为value

  

允许在元素名称为值的单元素注释中省略元素名称和等号(=)