【Java分析】注解

定义:

          JDK1.5 引入注解类型通过注解类型,可以声明元数据。注解可以附加到各种程序实体(包括类型,方法,字段等),注解主要给编译器提供额外的信息,编译器可以同这些附加信息自动生成相应的代码,从而实现特定的功能。

注解类型:

          1、java 类库中预定义的注解类型

          2、自定义注解类型

1、预定义注解

           其中分为:3 种标准注解类型:@Override@Deprecated@SupressWarning

                             4 种元注解类型:@Target@Retention @Documented @Inherited        

           1、@Override 注解类型

                  只能用于方法,不能用于其他类型上(接口,类等)

                  Override 为标记注解,没有参数。

           2、@Deprecated 注解类型

                   在类库的设计当中,随着版本的升级,有些方法已经过时,用@Deprecated 进行注解。在使用过程中 编译器会显示提示信息(对标记的元素画删除线)。

                   @Deprecated 注解类型可以标记任何程序实体(包括方法,字段,类型等)。

                   @Deprecated 注解是标记注解没有形参。

           3、@SuppressWarnings 注解类型

                   编译器除了提示错误信息之外,还提供警告信息,例如:当类型强转时,变量定义未使用时都会出现 编译时的警告信息。 该注解类型标记程序中的各种实体。 该注解为单一值注解,带一个参数(字符串数组)。数组的取值可以是一下几种:

                   1 deprecation:使用了过时的方法和类的警告

                   2 unchecked:执行了未检查的转换时警告

                   3 fallthrough:在 switch...case 语句中没有通过 break 直接进入下一条语句

                   4 path:在类路径,源文件路径中有不存在的路径时的警告

                   5 serial:在可序列化的类上缺少 serialVersionUID 定义时的警告

                   6 finally:任何 finally 子句不能正常完成时的警告

                   7 all: 关于以上所有的情况的警告

           4、@Target 注解类型

                   @Target 为元注解,只能标记用户自定义的注解类型。表示该注解能用于什么地方,可以附加的程序实体。@Target 带一个枚举类型的数组参数。例:@Target({ElementType.METHOD})

                   1 ElementType.ANNOTATION_TYPE:注解类型的声明

                   2 ElementType.CONSTRUCTOR:构造方法的声明

                   3 ElementType.FIELD 域声明

                   4 ElementType.LOCAL_VARIABLE 局部变量声明

                   5 ElementType.METHOD 方法声明

                   6 ElementType.PACKAGE 包声明

                   7 ElementType.PARAMENT 参数声明

                   8 ElementType.TYPE 类,接口(包括注解类型)或 enum 声明

 

           ​​​​​​​5、@Retention 注解类型

                   为元注解类型,只能标记用户自定义的注解类型该元注解表示的是注解保存的位置,带有一个枚举类型(RetentionPolicy)的参数。

                   参数类型:

                   1 RetentionPolicy.SOURCE:注解保留在源代码中(将被编译器丢弃)

                   2 RetentionPolicy.CLASS:注解保留在 class 文件中(将被 JVM 丢弃)

                   3 RetentionPolicy.RUNTIME:在运行期间保留注解,因此可以通过反射机制读取注解的信息。

           ​​​​​​​6、@Documented 注解类型

                   该 元 注 解只 能 标 记 自 定义 注 解 类 型 。此 注 解 包 含 在 javadoc 中 ( 例 如 Deprecated 被 标 记 为 @Documented)。该元注解没有参数。

           ​​​​​​​7、@Inherited 注解类型

                   该元注解只能标记用户自定义的注解类型。表示允许子类继承父类中的注解。通过反射机制读取注解的 信息时,如果该类型的注解没有注解类型信息,则会尝试读取从基类继承来的注解信息。该元注解没有类型参数。

2、自定义注解类型:​​​​​​​

元注解类型 
[注解修饰符] @interface 注解类型名{
 注解体 
}[;]

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值