使用Annotation注解时,需要在前面加上@符号,且把注解当成一个修饰符使用。用于修饰它支持的程序元素
三个基本Annotation注解
当子类重写了父类的每个方法时,可以使用@Override进行修饰。
如果不使用,也不会影响重写。
但是如果使用了,编译器会检查一下是否真的重写了。如果该方法没有重写父类的方法,则会报错
案例演示:
public class Father {public void fly(){}
}
class Son extends Father{@Overridepublic void fly(){}//如果使用了@Override修饰,但是该方法又没有重写父类的方法,就会报错@Override// public void soor(){}
}
如果查看@Override的定义会发现是@interface,但是这里不是表示接口,而是一个注解类
使用@Override的注意细节
@Deprecated可以修饰:方法,类,包,参数,属性等
来表示被修饰的元素已经过时了,不推荐使用,但是是可以使用的。
比如在2022年的IPone4s,IPone4s就可以使用@Deprecated修饰
被@Deprecated修饰的元素在被调用时,会有一根小线
案例演示:
可以看到这个线条让人感觉这个元素就很low,就是个细狗。
@Deprecated使用注意事项
@SuppressWarnings可以修饰在,类,方法,属性等的上面
在写代码时,通常会碰到一些警告,比如下面的:
可能是每个类没有使用,或者是某个方法没有使用到,,,,等等的。就很烦
所以就可以使用@SuppressWarnings({“想要忽略警告的内容”}),
比如要忽略这个类中所有的警告就在这个类上面 @SuppressWarnings({“all”})
可以看到就没有黄色警告了。如果想要单独忽略某个方法的,就在这个方法上注解。
可能会用到的内容:
全部警告:@SuppressWarnings({“all”})
没有检查的警告:@SuppressWarnings({“unchecked”})
没有使用的警告:@SuppressWarnings({“unused”})
…
元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。它的作用和目的就是给其他普通的标签进行解释说明的。
比如说明 这个注解可以注解在哪些元素上面:类 方法 属性 等等。或者声明这个注解会被保留到哪个阶段等等
java中一般有4中元注解:
@Target 表示该注解用于什么地方
@Retention 表示在什么级别保存该注解信息
@Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档
@Inherited 允许子类继承父类中的注解
这个元注解表示:注解改注解可以用在什么元素上面:
具体可以使用在什么上可以看支持的枚举类对象
ElemenetType.CONSTRUCTOR-----------------------------构造器声明
ElemenetType.FIELD ----------------------------------域声明(包括 enum 实例)
ElemenetType.LOCAL_VARIABLE------------------------- 局部变量声明
ElemenetType.METHOD ---------------------------------方法声明
ElemenetType.PACKAGE --------------------------------包声明
ElemenetType.PARAMETER ------------------------------参数声明
ElemenetType.TYPE----------------------------------- 类,接口(包括注解类型)或enum枚举声明
@Retention表示该注解可以保留到哪一个阶段,java文件有三个阶段:编译阶段 class文件 JVM运行阶段
具体支持到什么阶段可以看支持到哪一个枚举类对象:
RetentionPolicy.SOURCE-------------注解将被编译器丢弃
RetentionPolicy.CLASS -------------注解在class文件中可用,但会被JVM丢弃
RetentionPolicy.RUNTIME ---------JVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息
表示此注解会保存到javadoc中,在提取成文档的时候可以显示内容
允许子类继承父类的注解