注解(annotation),也叫元数据,它是jdk1.5版本及以后版本中引进来,它可以对类(type)、字段(field)、方法(method)、参数(parameter)、构造器(constructor)、局部变量(local_variable)进行说明,告诉编译器如何去运行程序。
常用的注解有:@Deprecated,标记方法以及过时 @Override,重写父类的方法 @SuppressWarnings(value={"unused","unchecked"}), 抑制编译器的警告。
注解的作用:1.告诉编译器如何运行程序 2.简化(或者说取代)配置文件xml
常见的注解使用:
public class AnnotationApp {
@Override
public String toString(){
return super.toString();
}
@SuppressWarnings({"unused","rawtypes"})
public void save(){
List list=null;
}
@Deprecated
public void save2(){
}
}
有时候官方的注解并不能满足我们,我们需要自己去定义自己需要的注解
自定义注解的基本写法
public @interface Author {
//自定义一个作者的注解
/**
* 注解属性
* 1. 修饰为默认或public
* 2. 不能有主体
*/
String name();
int age();
}
使用
@Author(name = "Jet", age = 30)
public void save() {
}
带默认值的注解写法:
带默认值的注解,使用的时候就可以不写此属性值(如果注解属性名称为value时,这是默认的 ,使用的时候可以省略名称直接给值(这是注解仅有一个属性的情况下才可以省略))
public @interface Author {
int age() default 30;
}
注解属性为数组的时候:
public @interface Author {
String[] value() default {"test1","test2"};
}
使用:
@Author({“xxx”,“xxxx”})
public void save() {
}
元注解:修饰注解的注解
指定注解的可用范围:
@Target{TYPE, FIELD, METHOD, PARMETER, CONSTRUCTOR, LOCAL_VARIABLE}分别对应着,类、字段、方法、参数、构造器、局部变量
指定注解的周期:
@Retention(RetentionPolicy.SOURCE) 在源码的时候有效
@Retention(RetentionPolicy.CLASS) 在字节码的时候有效
@Retention(RetentionPolicy.RUNTIME) 在运行的时候有效