自定义注解

例子见Github-JavaSE-Day08

注解

  • Annontation是JAVA5开始引入的新特征,称为注解
  • 它提供了一种安全的类似注释的机制,用来将任何信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
  • Java注解是附加在代码中的一些元信息

注解的作用

  1. 生成文档
    @param @return等

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

  3. 在编程时进行格式检查
    如@override放在方法前,如果这个方法并不是覆盖了超类方法,则编译时能检查出。

    @Deprecated // 当前方法已经过时了
    @SuppressWarnings(“all”) // 忽略对应的警告信息

自定义注解

元注解

· 作用:负责注解其他注解,Java中定义了四个标准的meta-annotation类型,被用来提供对其他annotation类型做说明。
· 这些类型和它们所支持的类在java.lang.annotation包中
在这里插入图片描述

@Target
用来描述注解的使用范围,类、方法、变量、包等类型

@Retention()
表示当前注解适用于什么环境,是源码级别还是类级别还是运行时环境,一般都是运行时环境
Source < Class < Runtime

参数 含义
RetentionPolicy.RUNTIME 运行时
RetentionPolicy.CLASS 运行环境
RetentionPolicy.SOURCE 源码级别

可选:
@Document
表示该注解是否显示在javadoc中
@Inherited
表示该注解是否能否能够被继承

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MetaAnnotation {
@MyAnnotation(age = 12,id = 3,likes = {"book","lol","movie"})
public void test(){};
}
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
@Documented
@Inherited
@interface MyAnnotation{

// 定义的方式看起来像方法,但是实际上使用在:使用注解的时候,填写的参数的名称,默认名称是value
// 当我们在自定义注解中填写的所有方法,都需要在使用注解的时候添加值,很麻烦,因此包含默认值
String name() default "zhangs";
int age();
int id();
String[] likes();
}