注解:
- 就是Java代码里的特殊标记,比如:@Override、@Test等,作用是:让其他程序根据注解信息来决定怎么执行该程序。
- 注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处。
自定义注解
- 就是自己定义注解
- 格式:
代码演示如下:
/** * 自定义注解 */ public @interface MyTest1 { String aaa(); boolean bbb() default true; String[] ccc(); }
测试类
@MyTest1(aaa = "牛魔王",ccc = {"大角牛","大青蛙"}) public class AnnotionTest1 { @MyTest1(aaa = "铁扇公主",bbb=false,ccc ={"python","java","前端"}) public void test1(){} }
特殊属性名:value
- 如果注解中只有一个value属性,使用注解时,value名称可以不写!!
代码演示如下:
@MyTest2("孙悟空") public class AnnotionTest1 { @MyTest1(aaa = "铁扇公主",bbb=false,ccc ={"python","java","前端"}) public void test1(){} }
public @interface MyTest2 { String value(); // 特殊属性 }
注解的原理
- 注解本质是一个接口,Java中所有注解都是继承了Annotation接口的。
- @注解(…):其实就是一个实现类对象,实现了该注解以及Annotation接口。
元注解
- 指的是:修饰注解的注解
@Target 代码演示如下:
@Target({ElementType.TYPE,ElementType.METHOD}) // 当前被修饰的注解只能用于类和成员方法
public @interface MyTest3 {
}
@MyTest3 public class AnnotationTest2 { @MyTest3 public void test() { } }
@Retention代码演示如下:
@Retention(RetentionPolicy.RUNTIME)//控制下面的注解一直保留到运行时
@Target({ElementType.TYPE,ElementType.METHOD}) // 当前被修饰的注解只能用于类和成员方法
public @interface MyTest3 {
}