作用:对程序作出解读;可以被其他程序读取
格式:“@注释名”,还可以添加参数(@SuppressWarnings(value = "unchecked"))
使用位置:package,class,method,field(字段)等上面使用;通过反射机制对这些元数据的访问
常见内置注解
-
@Override(重写)
-
@Deprecated(表示不鼓励程序员使用的元素)
-
@SuppressWarnings(用于抑制编译时的警告信息)
元注解:解释其他注解的注解
-
@Target:描述注解的使用范围
-
@Retention:表示需要在什么级别保存该注释信息,描述注解的生命周期
-
(source < class < runtime)
-
-
@Document:表示该注解将被包含在javadoc中
-
@Inherited:表示子类可以继承父类的注解
自定义注解
public class Test02 {
//注解可以显示赋值(没有顺序),如果没有默认值,就必须给注解赋值
@MyAnnotation1(age = 0)
public void test01(){
}
@MyAnnotation2("卓森")
public void test02(){
}
}
//定义一个注解
@Target(value = ElementType.METHOD)
@Retention(value = RetentionPolicy.CLASS)
@interface MyAnnotation1{
//注解参数:参数类型 + 参数名(); defalut + 值 表示默认值
String name() default "";
int age();
int id() default -1; //如果默认值为-1,代表不存在
String[] schools() default {"广金"};
}
@Target(value = ElementType.METHOD)
@Retention(value = RetentionPolicy.CLASS)
@interface MyAnnotation2{
//只有一个参数时,尽量使用value,这样可以隐视赋值
String value();
}