java注解
一、注解
概念
概念:说明程序的。给计算机看的
注释:⽤⽂字描述程序的。给程序员看的
定义:注解(Annotation),也叫元数据。⼀种代码级别的说明。它是JDK1.5及以后版本引⼊的⼀个特性,与类、接⼝、枚举是在同⼀个层次。它可以声明在包、类、字段、⽅法、局部变量、⽅法参数等的前⾯,⽤来对这些元素进⾏说明,注释。
使⽤注解:@注解名称
JDK中预定义的⼀些注解
- @Override :检测被该注解标注的⽅法是否是继承⾃⽗类(接⼝)的
- @Deprecated:该注解标注的内容,表示已过时
- @SuppressWarnings:压制警告
- ⼀般传递参数all @SuppressWarnings(“all”)
示例:
@SuppressWarnings("all")
public class AnnotationDemo1 {
@Override
public String toString() {
return super.toString();
}
@Deprecated
public void test(){
System.out.println("this is deprecated...");
}
public void test2(){
System.out.println("this is old....");
}
public static void main(String[] args) {
AnnotationDemo1 annotationDemo1 = new AnnotationDemo1();
annotationDemo1.test();
}
}
⾃定义注解
语法格式:
元注解
public @interface 注解名称{
属性列表;
}
- 本质:注解本质上就是⼀个接⼝,该接⼝默认继承Annotation接⼝
- public interface MyAnno extends java.lang.annotation.Annotation {}
- 属性:接⼝中的抽象⽅法
元注解:⽤于描述注解的注解
@Target:描述注解能够作⽤的位置
- ElementType 取值:
- ElementType.TYPE 指定注解只能修饰类或者接⼝ --重点
- ElementType.FIELD 指定注解只能修饰成员属性 --重点
- ElementType.METHOD 指定注解只能修饰⽅法 --重点
- ElementType.PARAMETER 指定注解只能修饰⽅法的参数
- ElementType.CONSTRUCTOR 指定注解只能修饰构造⽅法
- ElementType.LOCAL_VARIABLE 指定注解只能修饰局部变量
- ElementType.TYPE_USE 指定注解能修饰所有的 --JDK1.8后拥有的
@Retention:描述注解被保留的阶段
- RetentionPolicy.SOURCE 注解信息保留在源⽂件中
- RetentionPolicy.CLASS 保留在class⽂件中
- RetentionPolicy.RUNTIME 注解信息在运⾏时保留,搭配反射使⽤ --重点
示例:
import java.lang.annotation.*;
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})//标识注解作⽤的
位置
@Retention(RetentionPolicy.RUNTIME)//描述注解被保留的阶段
//当前被描述的注解,会保留到class字节码⽂件中,并被JVM读取到
public @interface MyAnno3 {
}
@MyAnno3
public class Worker {
private String name;
@MyAnno3
public void show(){
System.out.println("show.....");
}
}