Java中的注解(Annotation)

Java中的注解(Annotation)

Annotation介绍

  • Annotation其实是代码中的标识符,可以在编译时,类加载时,运行时被读取,可以在不改变原有逻辑的情况下,在源文件中嵌入一些信息
  • 在JavaSE中注解的功能就只是一些标识符,在JavaEE中注解可以代替繁琐的代码或则XML文件

Annotation的使用场景

  • 场景一:生成文档相关注释(比如在文件头部添加作者、版本等其他信息)
  • 场景二:在编译时进行格式检查(JDK内置三种基本注解)
    • @Override:用于重写父类的方法
    • @Deprecated:过时的,用来修饰已过时的方法,一般在上面都会有推荐使用新的方法
    • @SuppressWarnings:抑制编译器警告,在idea中未使用的对象会呈现灰色,在eclipse中则前面会爆警告
  • 场景三:实现代替配置文件的功能

如何自定义注解

  • 注解声明为@interface
  • 内部定义成员,通常用value表示
  • 可以指定内部成员的默认值,使用default定义
  • 如果没有指定默认值的话,使用时必须指明成员的值
  • 如果注解中没有内部成员,则只是起到一个标识作用
public @interface MyAnnotation {
    String[] value();
}

//使用时
@MyAnnotation("value = 1")

JDK中提供的4种元注解

元注解的作用:为现有的注解进行解释说明

  • Retention:定义现有注解的生命周期
    • SOURCE:注解将被编译器丢弃,也就是说只是在写代码的时候起到一个提示作用比如@Override
    • CLASS:默认行为,注解将被带到.class文件中,但不会运行时保留
    • RUNTIME:在运行时会起作用,可以实现代替配置文件作用,只有此注解才会被反射机制捕获
  • Target:用于修饰注解用在什么地方,比如类中,构造方法中等
  • Documented:当文件被javaDoc解析成api文档时,保留注解信息
  • Inherited:注解可以被继承,比如父类注解被该元注解修饰,那么子类默认继承注解

JDK8中注解的新特性

  • 可重复注解
    1. 创建一个新的注解,将需要重复的注解的类型作为数组定义value
    2. 在需要重复的注解上声明@Repeatable,并将新的注解作为参数传入(注解名.class)
    3. 两个注解的Retention和Target必须相同
  • 类型注解
    1. ElementType.TYPE_PARAMETER:表示该注解可以写在类型变量的声明语句中(如:泛型申明)
    2. ElementType.TYPE_USE:表示该注解可以写在使用类型的任何语句中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值