Java 注解知识盘点

注解(Annotation)

注解概述

  • 从JDK 5.0开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注解)。
  • Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。
  • Annotation 可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被保存在Annotation的“name=value"对中。
  • 在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android中注解占据 了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。
  • 未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后 也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,一定程度上可以说:框架=注解+反射+设计模式。

常见的注解示例

1、生成文档有关的注解
2、在编译时进行格式检查(JDK内置的三个基本注解)
@Override:限定重写父类方法,该注解只能用于方法。
@Deprecated:用于表示所修饰的元素(类,方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择。
@SuppressWarnings:抑制编译器警告。

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

自定义注解

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

  • 自定义注解自动继承了java.lang.annotation.Annotation接口

  • Annotation的成员变量在Annotation定义中以无参数方法的形式来声明。其
    方法名和返回值定义了该成员的名字和类型。我们称为配置参数。类型只能
    是八种基本数据类型、String类型、 Class 类型、enum 类型、Annotation 类型、
    以上所有类型的数组。

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

  • 如果只有一个参数成员,建议使用参数名为value

  • 如果定义的注解含有配置参数,那么使用时必须指定参数值,除非它有默认
    值。格式是“参数名=参数值”,如果只有一个参数成员,且名称为value,
    可以省略“value=’”

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

  • 注意:自定义注解必须配上注解的信息处理流程(反射)才有意义。

    @interface Myannotation{
        String value() default "hello";
    }
    

JDK中的元注解

JDK的元Annotation用于修饰其他Annotation定义。
JDk5.0提供了4个标准的meta-annotation类型,分别是:
Retention
在这里插入图片描述

​ Target
在这里插入图片描述

​ Documented
​ Inherited

在这里插入图片描述

JDK8中注解的新特性

可重复注解

在当前注解1上声明@Repeatable(元注解),成员值为注解2.class。
注解2为一个内部成员类型是注解1数组类型的注解,且1和2的Rentention和Target等元注解相同。

类型注解

在这里插入图片描述

在这里插入图片描述

利用反射获取注解信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值