注解Annotation是从Java 1.5开始加入,对于Java 17来说主要是来自模块java.base下的包java.lang.annotation。该包提供了Java编程语言注解的类库支持。
没有注解之前,Java中大量使用了 XML 配置文件的方式,比如Java之首的Spring框架。
对于Java中的注解实现方式师基于源码实现的,对于使用注解和非注解的编程方式,,编译的字节码都是一样的。
注解
· 对程序进行标注和注释
注解和注释的区别
· 注释:程序人员直接读信息(给程序员看的一种标记)
· 注解:程序人员使用反射技术来读取注解信息(给编译器看的标记)
· 注释不会影响代码的运行,注解会影响代码运行
使用注解的优势
· 代码更加简洁,方便
内置注解
Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation 中。 作用在代码的注解是
注解名 | 说明 |
@Override | 描述子类重写父类的方法 |
@Deprecated | 描述方法过时(代码上有一条横线) |
@SuppressWarnings | 抑制警告(灰色代码或有波浪线的代码) |
内置注解:@Override @Deprecated @SuppressWarnings @FunctionalInterface @SafeVarargs
定义注解格式
修饰符 @interface 注解名称{
[注解的方法参数]
}
以及 API 的描述,对于注解的实现。通常分为三种,第一种是最通用的。其他的都是第一种的简写 方式。 标准的注解( NormalAnnotation )
举例: @TypeName(value=ElementValue) 标记注解( MarkerAnnotation )
举例:@TypeName 单元素注解( SingleElementAnnotation )
举例:@TypeName(ElementValue)
关键字
关键字 | 用途 |
all | to suppress all warnings(抑制所有警告) |
boxing | to suppress warnings relative to boxing/unboxing operations(要抑制与箱/非 装箱操作相关的警告) |
cast | to suppress warnings relative to cast operations(为了抑制与强制转换操作相 关的警告) |
dep-ann | to suppress warnings relative to deprecated annotation(要抑制相对于弃用 注释的警告) |
deprecation | to suppress warnings relative to deprecation(要抑制相对于弃用的警告) |
fallthrough | to suppress warnings relative to missing breaks in switch statements(在 switch语句中,抑制与缺失中断相关的警告) |
finally | to suppress warnings relative to finally block that don’t return(为了抑制警 告,相对于最终阻止不返回的警告) |
hiding | to suppress warnings relative to locals that hide variable(为了抑制本地隐藏 变量的警告) |
incomplete-switch | to suppress warnings relative to missing entries in a switch statement (enum case)(为了在switch语句(enum案例)中抑制相对于缺失条目的警告) |
nls | to suppress warnings relative to non-nls string literals(要抑制相对于非nls字 符串字面量的警告) |
null | to suppress warnings relative to null analysis(为了抑制与null分析相关的警 告) |
rawtypes | to suppress warnings relative to un-specific types when using generics on class params(在类params上使用泛型时,要抑制相对于非特异性类型的警告) |
restriction | to suppress warnings relative to usage of discouraged or forbidden references(禁止使用警告或禁止引用的警告) |
serial | to suppress warnings relative to missing serialVersionUID field for a serializable class(为了一个可串行化的类,为了抑制相对于缺失的 serialVersionUID字段的警告)z |
tatic-access | o suppress warnings relative to incorrect static access(o抑制与不正确的静态 访问相关的警告) |
synthetic-access | to suppress warnings relative to unoptimized access from inner classes(相 对于内部类的未优化访问,来抑制警告) |
unchecked | to suppress warnings relative to unchecked operations(相对于不受约束的操 作,抑制警告) |
unqualified-field-acce | to suppress warnings relative to field access unqualified(为了抑制与现场访 问相关的警告) |
unused | to suppress warnings relative to unused code(抑制没有使用过代码的警告) |
@SuppressWarnings使用
元注解
概述:元注解就是描述注解的注解(注解注解的注解)
元注解介绍
元注解名 | 说明 |
@Target | 指定注解在哪里使用 |
@Retention | 可以理解该接口的生命周期, 也就是在运行时保留该注解多少时间 |
@Inherited | 此类注解主要是为了让子类进行继承 |
@Documented | 表示该自定义注解,会出现在API文档里面 |