web-dev-qa-db-ja.com

括弧内に属性を指定せずにJava @name( "Luke")のような注釈を付けるにはどうすればよいですか?

括弧内に属性名のないカスタムJavaアノテーションをどのように実行できますか?

これは必要ありません:@annotation_name(att=valor)。私はサーブレットのようにしたい、すなわち:

@WebServlet("/main")
41

valueという名前の属性を使用して注釈を定義すると、属性nameを省略できます。

@interface CustomAnnotation
{
    String value();
}

これは次のように使用できます。

@CustomAnnotation("/main")
// ...
46
pb2q

Valueという名前の属性を指定します。

public @interface MyAnnotation {

    String value();

}

デフォルト値がある場合、これが唯一の属性である必要はありません。

public @interface MyAnnotation {

    String value();
    int myInteger() default 0;

}

ただし、値以外の属性に値を明示的に割り当てる場合は、値を明示的に割り当てる必要があります。つまり、

@MyAnnotation("foo")
@MyAnnotation(value = "foo", myInteger = 1)

働く

だが

@MyAnnotatino("foo", myInteger = 1)

ではない

27
Doug Moscrop

引用 Annotations公式ドキュメント

valueという名前の要素が1つしかない場合は、次のように名前を省略できます。

@SuppressWarnings("unchecked")
void myMethod() { }

これはこのアノテーションがどのように定義されるかです:

public @interface SuppressWarnings {
  String[] value();
}

ドキュメントが完全に正しくないことを確認できるように、他の属性も許可されています( "1つの要素")。詳細は WebServlet -ただし、valueという名前の扱いは異なります。

12