一个简单例子:
@Test public void Action() {
}
每个注解名字的前面都有@符号
注解可以拥有被称为元素的键/值。例如:
@Test(timeout=1000)
注解元素可以是以下类型:
声明注解可以出现在如下情况的声明里:
//对于变量,注解要放在类型前面:
public void Action(@SuppressWarnings("unchecked") String str)
{
@SuppressWarnings("unchecked") List<String> users = new ArrayList<>();
}
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
int id() default 0;
String info() default "";
}
注解Target和注解Retention是元注解,指定注解可以出现的位置以及在哪里可以访问到。
@Retention:当一个普通注解被 @Retention
注解标识时,它限定了这个普通注解的生命周期。
RetentionPolicy.SOURCE RetentionPolicy.CLASS RetentionPolicy.RUNTIME
@Target:当一个普通注解被 @Target
注解标识时,这个普通注解就被限定了在那些地方起作用。比如被限定只在java的类上起作用、或者方法上起作用。
ElementType.TYPE ElementType.FIELD ElementType.METHOD ElementType.PARAMETER ElementType.CONSTRUCTOR ElementType.LOCAL_VARIABLE ElementType.ANNOTATION_TYPE ElementType.PACKAGE ElementType.TYPE_PARAMETER ElementType.TYPE_USE