如何在括号内没有属性名称的情况下进行自定义 Java 注释?
我不想要这个:@annotation_name(att=valor)
。我只想像在Servlets中一样,即:
@WebServlet("/main")
如何在括号内没有属性名称的情况下进行自定义 Java 注释?
我不想要这个:@annotation_name(att=valor)
。我只想像在Servlets中一样,即:
@WebServlet("/main")
使用名为 的属性定义注释value
,然后可以省略属性名称:
@interface CustomAnnotation
{
String value();
}
这可以像这样使用:
@CustomAnnotation("/main")
// ...
您指定一个名为 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)
才不是
引用注释官方文档:
如果只有一个元素名为
value
,则名称可以省略,如下所示:
@SuppressWarnings("unchecked")
void myMethod() { }
这是这个注解的定义方式:
public @interface SuppressWarnings {
String[] value();
}
如您所见,文档并不完全正确,还允许其他属性(“仅一个元素”),请参阅WebServlet
- 但命名value
的属性会有所不同。