注解作用
注解其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation, 程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。java中常见的三个注解
- @Override : 声明该方法是从父类或接口上继承过来的,执行编译期的检查- @SuppressWarnings : 抑制编译器警告 值有好多,只需要知道一个 all 抑制所有的警告
- @Deprecated : 声明 该方法不赞成使用(方法过时提示)
注解属性:
注解本质上就是一个接口,接口中有常量和抽象方法抽象方法在注解中就被称为注解属性(注解中定义时不需要定义访问权限)
注解属性类型:
- 基本类型
- String
- Class
- Annotation
- Enum
- 以上类型对应的一维数组
注解有属性的话调用者必须要将给属性赋值(除非这个注解属性有默认值)
格式: @注解名(属性=属性值)
若注解类型为数组,且只有一个值的时候,可以有两种写法
方式1: 属性={值1}
方式2: 属性=值1
若属性名为value的时候,且只需要为这个value属性赋值的时候,value可以省略
定义注解:
![![注解的定义][1]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/%E6%B3%A8%E8%A7%A31.png)
调用注解:
![![调用注解][2]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/%E6%B3%A8%E8%A7%A32.png)
元注解
定义在注解上的注解@Target 规定注解作用在什么上面
值为ElementType的枚举值
- TYPE:作用在类 接口 等上面
- METHOD:作用方法上面
- FIELD:作用字段上面
使用Target
Target源码![![Target源码][3]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/Target%E6%BA%90%E7%A0%81.png)
使用Target定义注解
![![元注解][4]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/%E5%85%83%E6%B3%A8%E8%A7%A31.png)
调用
![![调用][5]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/%E8%B0%83%E7%94%A8MyAnnotation.png)
@Retention 规定注解保留到什么阶段
值为RetentionPolicy的三个枚举值
- SOURCE:只在代码中保留,在字节码文件中就删除了(默认)
- CLASS:在代码和字节码文件中保留
- RUNTIME:所有阶段都保留
实现junit包的@Test单元测试功能
需要单元测试的类![![需要单元测试的类][6]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95%E7%9A%84%E7%B1%BB.png)
自定义注解
![![自定义注解][7]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/%E5%AE%9E%E7%8E%B0%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.png)
主方法类
![![主方法类][8]](http://suyibkftp.oss-cn-qingdao.aliyuncs.com/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%9B%BE/%E6%B3%A8%E8%A7%A3/main%E7%B1%BB.png)