在我们写java程序时,往往会看到前面有@Override这类说明
他就是注解

作用

注解是不影响本程序的,起一个解释说明作用,这里和注释一样
区别在于,注解可以被别的程序读取到,比如A有注解,虽然A读不到,但是调用A的B可以读取到,并执行一些操作

比如一个美女虽然很难取悦自己,但是她可以轻松取悦别人(这是我想到的最通俗的解释,认真脸)

内容

我们介绍5个注解,也是很常用的注解
三个基本注解 Override,Duprecated,FunctionalInterface
两个元注解 Target Retention
元注解表示对注解的注解

@Override

确保重写接口的方法不会错,否则会提示
这里Annotation继承了Test1,并重写方法,方法名随便命名没有问题

但是,当我把加了注解的over写错时,就会报错,因为没有Override会检查下面的这个方法是否在接口中有,如果没有,报错

Deprecated

表示过时的方法或类,不建议使用,但是还可以用,要过一段时间才会淘汰

可以看到最后一行,调用方法时depre被加了中划线

FunctionalInterface

表示一个接口中只应该有一个abstract方法(可以有static方法)

可以看到本来没有问题,加上func2之后就报错了

Target

用于指示注解的作用范围
我们看看官方的Override是怎么写的

可以看到,上面有两个元注解,其中之一是Target指示注解作用的范围是METHOD
所以可以看到,当Override注解在类上时就会报错

点击进入Target中的ElementType查看,这是一个枚举型变量,表示了注解的各种使用范围,类,方法,属性等

用这个更直观的图

Retention

用于指示注解的保留策略
再来看这个图

这里SOURCE表示在源程序中保留

当然,要想真正理解这个注解需要有反射的知识,这里就只简单提一下