注解(Annotation)

注解的概念

1.注解是代码里的一种标记,这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。我们可以在包,类,构造器,方法,成员变量,局部变量,方法参数上添加注解。代码分析工具、开发工具(如idea等)和部署工具可以通过这些补充信息进行验证或者进行部署。而注解本身并没有功能。
2.注解是JDK1.5的新特性

注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标 记,以后,javac编译器、开发工具和其他程序可以通过反射来了解你的类及各种 元素上有无何种 标记,看你的程序有什么标记,就去干相应的事,标记可以加在 包、类,属性、方法,方法的参数以及局部变量上。
在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。
框架 = 注解 + 反射 + 设计模式

注解的作用

1.生成帮助文档

生成文档相关的注解
@author 标明开发该类模块的作者,多个作者之间使用,分割
@version 标明该类模块的版本
@see 参考转向,也就是相关主题
@since 从哪个版本开始增加的
@param 对方法中某参数的说明,如果没有参数就不能写
@return 对方法返回值的说明,如果方法的返回值类型是void就不能写
@exception 对方法可能抛出的异常进行说明 ,如果方法没有用throws显式抛出的异常就不能写

在这里插入图片描述

2.在编译时进行格式检查

JDK内置的三个基本注解
@Override: 限定重写父类方法, 该注解只能用于方法,告诉编译器该方法是重写父类中的方法,如果父 类不存在该方法,则编译失败。
@Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择
@SuppressWarnings: 抑制编译器警告

3.跟踪代码依赖性,实现替代配置文件功能

Servlet3.0提供了注解就不需要在web.xml文件中进行Servlet的部署了。
在这里插入图片描述

4.框架配置等

自定义注解

语法格式
public @interface 注解名{ 

}

这是一个最简单的注解,这样的注解并没有什么作用,我们可以让这个注解更为丰富,如限制注解的使用位置使用元注解,让注解的功能更加强大给注解添加属性

以SuppressWarnings注解示例:

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})  //元注解
@Retention(RetentionPolicy.SOURCE)  //元注解
public @interface SuppressWarnings {
   
    String[] value(); //注解的属性
}
元注解

概述::由JDK提供的,用来限制自定义注解的注解。

@Target:用于限制自定义注解可以用在什么地方。从ElementType里取值。常用值:

  • ElementType.TYPE:可以用在类上
  • ElementType.METHOD:可以用在方法上
  • ElementType.FIELD:可以用在字段属性上
  • ElementType.LOCAL_VARIABLE:可以用在局部变量上

@Retention:用于限制自定义注解生命周期(保留到哪个阶段)。从RetiontionPolicy里取值,常用值:

  • RetentionPolicy.SOURCE:自定义注解保留到源码阶段
  • RetentionPolicy.CLASS:自定义注解保留到字节码阶段
  • RetentionPolicy.RUNTIME:自定义注解保留到运行阶段
注解的属性

语法:

  属性类型 属性名称()
  属性类型 属性名称() default 默认值

注:并非所有数据类型都可以使用的,注解的属性只支持:

  • 8种基本数据类型(int,float,boolean,byte,double,char,long,short)
  • String、Class、枚举、注解
  • 以及以上类型的一维数组

注解的使用

1.如果注解没有任何属性需要设置参数值的话,直接写@注解名
2.如果注解有属性需要设置参数值,就需要在使用注解时指定属性的值。如@注解名(属性名=值, 属性名=值,...)
3.如果注解只有一个属性需要赋值,并且属性名称是value,在使用注解时可以省略value=不写 。如:@注解名("value的值")

解析注解

前面说了注解本身并没有功能,哪为什么注解可以帮我们做这么多事呢,那是因为在IDE或某个代码程序里,它们利用反射获取注解信息,解析注解,给注解添加了这些功能。

代完善 …

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinking in Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值