2011-07-04 8 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にリストされていないため、通常のキーワードではありません。特に、私が知っている限り、好きな場所で識別子として使うことができます。

注釈値のデフォルトでvalueの使用は、section 9.7で指定されている:

注釈、単一要素の注釈の第三の形態は、単一要素の注釈タイプで使用するために設計された速記である:

@TypeName (value = ElementValue) 
01:
SingleElementAnnotation: 
    @ TypeName (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。 co.jp/docs/books/jls/third_edition/html/lexical.html#3.9 – gustafc

6

いいえ、valueではありません。はJavaのキーワードです。注釈にパラメータが1つしかなく、その注釈にvalueという1つの要素しかない場合は、注釈を使用するときにはvalueという名前を省略できます。注釈はここに説明されています: http://download.oracle.com/javase/1.5.0/docs/guide/language/annotations.html そして、でJLS:

関連する問題