注解
什么是注解:也叫元数据,一种代码级别的说明。
它是JDK1.5以后引入的一个特性,与类、接口、枚举在同一个层次。
它可以声明在包、类、字段、方法、局部变量、参数列表等前面,用来对这些元素进行说明、注释。
有哪些注解:
JDK中预定义的一些注解
自定义的注解
注解有什么用:
1.编写文档:生成文档doc
public class Demo1 {
public int add(int a,int b){
return a + b;
}
}
2.代码分析:对代码进行分析---使用注解
3.编译检查:通过程序中的注解让编译器实现基本的编译检查
基本注解
@override:监测被该注解标注的方法是否继承自父类
@Deprecated:该注解标注的内容,已过时,有更好的替代方法
@SuppressWarinings:压制警告
@SuppressWarnings("all")
public class Demo2 {
@Override
public String toString(){
return super.toString();
}
@Deprecated
public void show1(){
}
public void show2(){
}
public void demo(){
show1();
show2();
}
}
自定义注解
格式:
元注解:
public @Interface 注解名称(){}
public @interface Demo3 {}
本质:本质就是一个接口,该接口默认继承Annotation接口
属性:接口中可以定义的方法,接口中的抽象方法,要给属性赋值
如果定义属性时,使用default关键字给属性默认初始化值,则使用默认值
如果只有一个属性,且这个属性的名称是value,则value可以省略。
@Demo3(show2 = 1,name = "12")
public @interface Demo3 {
String name();
int show2();
}
元注解
用来描述注解的注解
@Target()//描述注解能够作用的范围
@Retention()//描述注解保留的阶段
@Documented//注解是否被抽取到api文档
@Inherited//描述注解是否被子类继承
@Target(value={ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Demo3 {
String name();
int show2();
}
解析注解
注解到底有什么用,获取值
public static void main(String[] args) {
Class<Demo2> demo2Class = Demo2.class;
String name = demo2Class.getAnnotation(Demo3.class).name();
System.out.println(name);
}
