java 注解中使用变量_Java中的注解

b08158123587686b937767c760f38d50.png

pring开发中经常用到注解,而Spring Boot更是“约定大于配置”,搭建项目仅有的几个都通过注解搞定了。

JDK1.5版本引入注解。所有的注解均继承自Annotation接口。查看Annotation的源码可以发现有四个方法,分别是equals, hashCode, toString, annotationType。定义注解的时候,使用特殊标记@interface,而不是显示指定继承自Annotation,又编译器自动做相关处理。

三个元注解:@Documented @Retention @Target

  1. @Documented

表示注解会进入Javadoc

2.@Retention

保留策略。定义在枚举类RetentionPolicy中的三种保留策略:SOURCE(只保存在源代码,编译时丢弃)、CLASS(保存在字节码文件中)、RUNTIME(字节码文件&JVM)。

3.@Target

作用目标.定义在ElementType的其中类型:

TYPE: 类,接口(包括注解类型)

FIELD: 属性

METHOD: 方法

PARAMETER: 参数

CONSTRUCTOR: 构造器

LOCAL_VARIABLE: 局部变量

ANNOTATION_TYPE: 注解类型

PACKAGE: 包

JDK1.8之后@Target新增的两种类型:

TYPE_PARAMETER: 类型变量声明(泛型)

TYPE_USE: 类型使用

常见注解:

@Override: 编译校验重载方法

@Deprecated 过时内容

@Inherited 注解具有继承性。例如@Annot是带有@Inherited注解的注解,注解到了A类上,则A类的子类也带上了@Annot注解。

@SuppressWarnings 忽略标注内容的警告

自定义的注解必须有三个元注解;注解可以注在其他注解上。

注解中成员的类型:

  1. 基本数据类型(boolean, byte, char, short, int, long, float, double等);
  2. String;
  3. Class;
  4. 枚举;
  5. 其他的;
  6. 以上类型的数组;

8261511cef4fa54cb972f425ca87a2ec.png

通过反射机制可以获取到类,方法或者参数等上面的注解,继而进行相应的处理。例如自定义日志注解,并使用切面技术对注解统一处理。


版权声明:本文为weixin_36401794原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。