目录
理解:
1)注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包,类,方法,属性,构造器,局部变量等数据信息。
2)和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息
3)在JAVASE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JAVAEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JAVA EE旧版本中所遗留的繁冗代码和XML配置等
介绍:
使用 Annotation 时要在其前面增加 @ 符号,并把该 Annotation 当成一个修饰符使用。用于修饰它支持的程序元素
三个基本的Annotation:
A:@Override:限定某个方法,是重写父类方法,该注解只能用于方法
B:@Deprecated:用于表示某个程序元素(类,方法等)已过时
C:@SuppressWarnings:抑制编译器警告
@Override的使用
如果写了 @override 注解,编译器就会去检查该方法是否真的重写了父类的方法,如果是,则编译通过,若没有构成重写,那么编译失败。(即进行语法校验)
@override源码:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
以后如果看到 @interface 表示一个注解类
1)@Override 表示指定重写父类方法,如果父类没有其后面重写的方法,则会报错
2)如果不写@Override 注解,而父类仍有 子类重写的方法 ,仍然构成重写
3)@Override只能修饰方法,不能修饰其他类,包,属性等等
4)查看@Override注解源码,说明只能修饰方法
5)@Target 是修饰注释的注解,称为元注解
@Deprecated的使用:
说明:
A:用于表示某个程序元素(类,方法)已过时
B:可以修饰方法,类,字段,包,参数 等等
C:@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})
D:@Deprecated 的作用域可以作用到新旧版本的兼容与过渡
@SuppressWarnings的使用:
@SuppressWarnings({""}) 其内部为参数可选项,利用逗号进行隔开
部分参数如下:
元注解:
基本介绍:
JDK 的元 Annotation 用于修饰其他Annotation
元注解:知道是干嘛的就彳亍了
元注解种类:
1)Retention //指定注解的作用范围,三种:SOURCE,CLASS,RUNTIME
2)Target //指定注解可以在哪些地方使用
3)Documented //指定该注解是否会在javadoc里面体现
4)Inherited //子类会继承父类注解
@Retention 注解
说明:只能用于修饰一个 Annotation 定义,用于指定该 Annotation 可以保留多长时间,@Retention 包含一个 RetentionPolicy 类型的成员变量,使用 @Retention 时必须为该 value 成员变量指定值:
@Retention三种指定值:
A:RetentionPolicy.SOURCE 编译器使用后,直接丢弃这种策略的注解
B:RetentionPolicy.CLASS 编译器将把注解记录在 class 文件中,当运行java 程序时,JVM 不会保留注释。这是默认值
C:RetentionPolicy.RUNTIME 编译器将把注解记录在 class 文件中,当运行java 程序时,JVM会保留注释,程序可以通过反射获取该注释
@Target 注解
说明:用于修饰 Annotation 定义,用于指定被修饰的 Annotation 能用于修饰哪些元素。@Target也包含一个名为value 的成员变量
@Documented 注解
说明:用于指定被该元 Annotation 修饰的 Annotation 类将被 javadoc 工具提取成文档,即在生成文档时,可以看见注解
说明:定义为Documented 的注解必须设置Retention值为RUNTIME 。
@Inherited 注解
说明:被它修饰的Annotation 将具有继承性,如果某个类使用了被@Inherited 修饰的 Annotation,其子类将自动具有该注解