什么是注解?
- Annotation是JDK5.0开始引入的技术
- Annotation的作用可以对程序作出解释(和注释没什么区别),可以被其他程序读取
- Annotation的格式是以“@注释名“在代码中存在的,还可以添加参数值,如@SuppressWarnings(value = “all”)
- Annotation可以附加在package,class,method,field等上面,给他们添加额外的辅助信息,可以配合反射实现对元数据的访问
Java内置注解
- @Override:定义在java.lang.Override中,此注释作用于方法上,表示一个方法重写超类中的另一个方法声明
- @Deprecated:定义在java.lang.Deprecated中,此注释作用于方法,属性,类,表示不鼓励程序员使用,通常是因为它很危险或者存在更好的选择
- @SuppressWarnings:定义在java.lang.SuppressWarnings中,用来意志编译时的警告信息
- JDK还有许多内置注解,有兴趣可以去观看源码,这里就不一一列举了
元注解
元注解的作用是负责注解其他注解,Java定义了4个标准的meta-annotation类型,它们被用来提供对其他annotation类型作解释。
这些类型和它们所支持的类在java.lang.annotation包中可以找到(@Target,@Retention,@Decumented,@Inherited)
- @Target:用于描述注解的使用范围(注解使用在类上,方法上,字段上等等)
- @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(SOURCE < CLASS < RUNTIME)
- @Decument:说明该注解将被javadoc打包生成
- @Inherited:说明子类可以继承父类中的注解
自定义注解
- @interface用来声明一个注解,格式为:public @interface 注解名 { 定义内容 }
- 其中的每一个方法实际上是声明了一个配置参数
- 方法的名称就是参数的名称
- 返回值类型就是参数的类型(返回值只能是基本类型Class,String,Enum)
- 可以通过default来声明参数的默认值
- 如果只有一个参数成员,一般参数名为value
- 注解元素必须要有值,我们定义注解元素时,经常使用空字符串或者0作为默认值
自定义注解演示案例
创建一个注解MyAnnotation.java:
创建一个pojo名为User.java:
创建一个Test.java演示自定义注解:
最终控制台输出结果:
总结
注解其实跟我们平时写代码的注释没多大区别,主要是注释给我们程序员看的,而注解是给程序解释的。通常注解和反射一起运用才是绝配,可以发挥出很强大的作用。希望这篇自定义注解对你们有所帮助~~~