Java之自定义注解

什么是注解?

  • 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:

img

创建一个pojo名为User.java:

img

创建一个Test.java演示自定义注解:

img

最终控制台输出结果:

img

总结

注解其实跟我们平时写代码的注释没多大区别,主要是注释给我们程序员看的,而注解是给程序解释的。通常注解和反射一起运用才是绝配,可以发挥出很强大的作用。希望这篇自定义注解对你们有所帮助~~~

-------------本文结束感谢您的阅读-------------

本文标题:Java之自定义注解

文章作者:god-jiang

发布时间:2020年12月27日 - 22:35:36

最后更新:2020年12月27日 - 22:39:52

原始链接:https://god-jiang.github.io/2020/12/27/Java之自定义注解/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

创作不易,您的支持就是我坚持的动力,谢谢大家!
0%