Java注解

1 简介

  • Annotation(注解)用于Java中对元数据的获取,是JDK5.0之后支持的特性。

  • Annotation是代码中的标记,在编译、类加载、运行时可以读取注解,进行相应的处理。

  • Annotation的使用类似于修饰符,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量等任何位置。

  • 在代码中添加注解不会改变代码原有的逻辑。

2 常用的注解

JDK内置了一些注解,最常用的有三个:

  • @override:保证编译时重写的方法的声明的正确性,只能作用于方法。
  • @Deprecated:用于表示所修饰的元素(类、方法等)已过时。
  • @SuppressWarnings:抑制编译器警告。

3 自定义注解

  • 使用@interface关键字声明注解
  • 自定义的注解自动继承java.lang.annotation.Annotation接口
  • 注解的成员变量用无参方法的形式声明。变量可通过default关键字指定默认值。
public @interface MyAnnotation {
    String value() default "hello";
}

4 标准元注解

JDK提供了4种标准元注解(对现有注解进行注解——注解的注解):

  • Retention:指定所修饰的Annotation的声明周期,由RetentionPolicy枚举:

    • SOURCE(源文件中有效)
    • CLASS(字节码文件中有效,默认的声明周期
    • RUNTIME(在运行时有效),只有声明为RUNTIME的注解才能通过反射获取。
  • Target:指定所修饰的Annotation能修饰的对象范围,由ElementType枚举:

    • PACKAGE (包)
    • TYPE(类型,包括类,接口、注解、枚举)
    • 类的成员:METHODFIELDCONSTRUCTOR
  • Documented:指定所修饰的注解在被javadoc解析时保留下来

  • Inherited:指定所修饰的注解具有继承性——该注解修饰了父类,该父类的子类也会自动被修饰。

5 注解拓展

5.1 可重复注解

默认情况下,对一个目标每个注解只能修饰一次,一下情况会报错:

在jdk8以前,要实现可重复注解,首先创建一个新的注解,该注解的成员为需要重复的注解的数组形式:

@interface MyAnnotations {
    MyAnnotation[] value();
}

然后通过@MyAnnotations实现重复注解:

在jdk8 中,新引入了@Repeatable元注解,实现可重复注解,此时MyAnnotations注解的元注解要和MyAnnotation一致,否则会编译不通过。

这种情况下,可以直接多次使用MyAnnotation注解:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值