自定义注解以及java注解的规范

java注解概述:

java注解就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用注解,程序员可以在不改变原有代码逻辑的情况下,在源文件中嵌入补充信息。

Annotation 可以像修饰符一样被使用, 可用于修饰包,, 构造器, 方法, 成员变量, 参数, 局部变量的声明, 这些信息被保存在 Annotation “name=value” 对中.

Annotation 能被用来为程序元素(, 方法, 成员变量等) 设置元数据

 

注解分类:

一.元注解(基本的注解)

@Retention @Target @Document @Inherited四种。

@Retention:定义注解的保留策略。 
通俗的讲,它表示一个注解类型会被保留到什么时候。 
@Retention(RetentionPolicy.SOURCE)//注解仅存在于源码中,在class字节码文件中不包含。 
@Retention(RetentionPolicy.CLASS)// 默认的保留策略,注解会在class字节码文件中存在,但运行时无法得。 
@Retention(RetentionPolicy.RUNTIME)// 注解会在class字节码文件中存在,在运行时可以通过反射获取到。

@Target:定义注解的作用目标。 
@Target(ElementType.TYPE) //接口、类、枚举、注解 
@Target(ElementType.FIELD) //字段、枚举的常量 
@Target(ElementType.METHOD) //方法 
@Target(ElementType.PARAMETER) //方法参数 
@Target(ElementType.CONSTRUCTOR) //构造函数 
@Target(ElementType.LOCAL_VARIABLE)//局部变量 
@Target(ElementType.ANNOTATION_TYPE)//注解 
@Target(ElementType.PACKAGE) ///包

@Document:说明该注解将被包含在javadoc中。 
会被Javadoc工具文档化。

@Inherited:说明子类可以继承父类中的该注解。 
这个比较难理解,这里详细讲一下,一般用在自定义注解上。 
我们自定义注解(Annotation)时,把自定义的注解标注在父类上不会被子类所继承,但是我们可以在定义注解时给我们自定义的注解标注一个@Inherited注解来实现注解继承。 
注意点: 
这种标有@Inherited注解的自定义的注解运用到类级别上和方法级别上是不一样的,如果把标有@Inherited注解的自宝义的注解标注在类级别上,子类则可以继承父类类级别的注解,反之,则不行。 

参考原文:https://blog.csdn.net/womengmengyan/article/details/52572302 
 

二.内建注解 Java本身内建了一些注解,下面我们来介绍一下我们在日常开发中比较常见的注解

三个基本的 Annotation:

@Override: 限定重写父类方法, 该注释只能用于方法

@Deprecated: 用于表示某个程序元素(, 方法等)已过时

@SuppressWarnings: 抑制编译器警告.

 

三.自定义注解

定义新的 Annotation 类型使用 @interface 关键字

Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明. 其方法名和返回值定义了该成员的名字和类型.

可以在定义 Annotation 的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字

没有成员定义的 Annotation 称为标记; 包含成员变量的 Annotation 称为元数据 Annotation

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值