我们见过的内置注解
@Override 表示重写一个方法
@Deprecated 不推荐程序员使用
我们调用使用该注解的函数的时候,函数可以看到有一个横杠
元注解
作用就是负责解释其他注解的注解
java定了四个标准的元注解
我们接下来自定义一个注解,用这四个元注解来测试一下
@Target
target注解中有一个属性value,类型是ElementType类型
这个ElementType类是一个枚举类
进行测试,可以发现我们自定义的注解可以注解在test方法上面
当我们想要用这个注解注解在类上的时候就会报错
表示该注解不能注解该类型
但是这个@Target的value是一个数组,可以在里面添加属性,这样注解就可以注解在类和方法上面
@Retention
同target一样,其中value值的类型是一个RetentionPolicy
枚举类型
只有RUNTIME,CLASS,SOURCE 三种
source源码 class字节 runtime运行时
自定义的注解一般都是runtime,表示在运行时候执行
@Document
表示是否将我们的注解生成在javadoc中
@inherited
子类可以继承父类的注解
自定义注解
使用@interface 相当于,自动继承了java.lang.annotation.Annotation接口
你自定义一个注解之后,注解里面的参数,就是以后你要使用注解的时候,在注解要传入的参数
String name() default "";
如果后面有default,那么就说明当不赋值的时候,这个值就为空
如果注解没有默认值,必须赋值,如果不赋值肯定会报错。