注解
注解
Annotation是从JDK5.0开始引入的
注释是给人看的,注解既给人看也给机器看
注解也有检查和规范的作用,比如@Override下面把重写的方法名写错了会报错
@FunctionalInterface函数式接口
@Deprecated已废弃的,不推荐使用的
@SuppressWarnings(value="unchecked")抑制警告
可以附加在package,class,method,field上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问
元注解
元注解负责注解其他注解
java定义了4个标准的meta-annotation类型,被用作说明其他annotation类型
java.lang.annotation包中的
- @Target:用于描述注解的适用范围(可以用在什么地方)
- @Retention:(需要在什么级别保存该注解信息,描述注解的生命周期SOURCE源代码<CLASS字节码<RUNTIME运行的时候,自定义的注解都用RUNTIME)
- @Documented表示是否将注解生成在Javadoc中
- @Inherited子类可以继承父类中的该注解
自定义注解
使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口
分析:
- @interface用来声明一个注解,格式:public @ interface 注解名
- 其中的每一个"方法"实际上是声明了一个配置参数,格式:参数类型 参数名() default 默认值; default默认值可以不写
- "方法"的名称就是参数的名称
- 返回值类型就是参数的类型(返回值只能是基本类型,Class,String,enum)
- 可以通过default来声明参数的默认值
- 如果只有一个参数成员,一般参数名为value
- 注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值。不在使用注解的地方给出应给的参数会报错
以后看别人的代码会有大量的注解,要知道别人都写了什么东西,规定了什么约束