49

括弧内に属性名を持たないカスタム Java アノテーションを行うにはどうすればよいですか?

これはいらない: @annotation_name(att=valor). サーブレットのようにしたいだけです。つまり:

@WebServlet("/main")
4

3 に答える 3

57

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

@interface CustomAnnotation
{
    String value();
}

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

@CustomAnnotation("/main")
// ...
于 2012-08-02T21:53:34.147 に答える
33

You specify an attribute named value:

public @interface MyAnnotation {

    String value();

}

This doesn't have to be the only attribute if they have default values:

public @interface MyAnnotation {

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

}

But if you want to explicitly assign a value to the attribute other than value, you then must explicitly assign value. That is to say:

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

works

but

@MyAnnotatino("foo", myInteger = 1)

does not

于 2012-08-02T22:02:40.300 に答える
18

注釈の公式ドキュメントの引用:

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

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

この注釈は次のように定義されます。

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

ドキュメントが完全に正しいわけではないことがわかるように、他の属性も許可されています (「 1つの要素のみ」) 。WebServletvalue

于 2012-08-02T21:55:45.313 に答える