Java的注解非但是一种标记,还是一种特殊的类型,并且拥有专门的类型定义。前面介绍的五种内置注解,都可以找到对应的类型定义代码,例如查看注解@Override的源码,发现它的代码定义是下面这样的:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {}
又如注解@FunctionalInterface,它的源码定义与之类似:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface {}
乍看过去,注解的定义竟与接口有几分相像,接口的类型名称是“interface”,而注解的类型名称是“@interface”,仅仅多了一个@符号。此外,内置注解的定义代码上方多出了好几个其它注解,包括@Target、@Retention、@Documented等等,这三个注解连同@Inherited组成了Java的“元注解”。四个元注解的作用是给新定义的注解添加修饰,标明新注解什么能干什么不能干,好比给一个战士配备各式各样的武器,使得他更适合在某种环境之中作战。接下来就对四种元注解分别进行详细介绍:
1、@Documented
该注解表示它修饰的注解将被收录到Java的开发文档中,这意味着程序员编码时的快捷提示会出现已收入的注解。
所谓的快捷提示