目录
概述
注解(Annotation)
- 就是Java代码里的特殊标记,比如:@Override、@Test等,作用是:让其他程序根据注解信息来决定怎么执行该程序。
- 注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处。
自定义注解
- 就是自己定义注解
public @interface 注解名称{
public 属性类型 属性名() default 默认值;
}
代码实例(1)
//自定义注解
public @interface MyTest1 {
//public可以省略
String aaa();
boolean bbb() default true;
String[] ccc();
}
//使用自定义注解
@MyTest1(aaa="牛魔王",ccc={"HTML","Java"})
public class AnnotationTest1 {
@MyTest1(aaa="铁扇公主",bbb=false,ccc={"Python","前端","Java"})
public void test1(){
}
}
特殊属性名:value
- 如果注解中只有一个value属性,使用注解时,value名称可以不写!
代码实例(2)
public @interface MyTest2 {
String value(); //特殊属性
}
//@MyTest2(value = "孙悟空")
@MyTest2("孙悟空")
public class AnnotationTest1 {
@MyTest1(aaa="铁扇公主",bbb=false,ccc={"Python","前端","Java"})
public void test1(){
}
}
注解的原理
- 注解本质是一个接口,Java中所有注解都是继承了Annotation接口的。
- @注解(...):其实就是一个实现类对象,实现了该注解以及Annotation接口。
元注解
- 指的是:修饰注解的注解。
Target
- 作用:声明被修饰的注解只能在哪些位置使用
@Target(Element.TYPE)
- TYPE,类,接口
- FIELD,成员变量
- METHOD,成员方法
- PARAMETER,方法参数
- CONSTRUCTOR,构造器
- LOCAL_VARIABLE,局部变量
Retention
- 作用:声明注解的保留周期。
@Retention(RetentionPolicy.RUNTIME)
①.SOURCE
- 只作用在源码阶段,字节码文件中不存在。
②.CLASS (默认值)
- 保留到字节码文件阶段,运行阶段不存在
③.RUNTIME (开发常用)
- 一直保留到运行阶段。
END
学习自:黑马程序员——Java课程