一、注解概述
1、 注解Annotation是从JDK5.0开始的新技术,注解信息在源码、编译期、运行期都存在,可以获取。
2、注解的作用:
● Annotation不是程序,而是用来解释程序的。
●Annocation可以被其他程序读取。
3、Annotation的格式:
@注解名(参数)
例如:@SuppressWarning(value = "unchecked")
4、注解在何处使用
Annotation 可以加在packet、class、method、field 等上面,相当于添加的额外的复制信息,之后可以通过反射机制对这些元数据进行访问。
二、内置注解
1、@Override: 该注解只能应用在方法上面,用来声明当前的方法要重写并覆盖超类中的方法。
1、@Deprecated: 该注释可以来修饰类、方法、属性,表示已经过时,不推荐程序员使用这样的元素。
2、@SuppressWarnings: 用来抑制编译时的警告信息。这个注解需要加参数才能使用,参数已经定义好了。
@SuppressWarning("all")
@SuppressWarning("unchecked")
@SuppressWarning(value={"unchecked","deprecation"})
......
代码演示:
public class AnnotationDemo {
@Deprecated//表示方法已经过时,不推荐使用该方法了
public static void run() {
System.out.println(Thread.currentThread().getName() + "Running");
}
@Override//表示重写超类中的方法
public String toString() {
return super.toString();
}
@SuppressWarnings("all")
public void show(){
System.out.println("show");
}
}
三、元注解
1、作用: 负责注解其他注解,对其他的注解进行说明。
2、分类
@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE}): 用来声明当前注解能定义在哪里。
@Retention({SOURCE,RUNTIME,CLASS}): 用来声明当前注解的生命周期。
@Document: 表示注解可以生成Javadoc信息
@Inherited: 允许子类继承父类的注解
四、自定义注解
格式:
@Interface 注解名 自动继承Java.lang.annotation.Annotation 接口
代码演示:
import java.lang.annotation.*;
public class Test1 {
@MyInnotation(value = {"zhangsan","lisi"},name = "ZH",id = 011,age = 21)
public static void main(String[] args) {
}
}
@Target(value = {ElementType.METHOD})//注解用在什么地方
@Retention(value = RetentionPolicy.RUNTIME)//注解的生命周期
@Documented //可以生成Javadoc信息
@Inherited //允许子类可以继承父类的注解
@interface MyInnotation {
//注解的参数
String[] value();
String name() default "hang";
int id() default 001;
int age() default 20;
}