java注解

1.简单理解

  • 给数据或者代码加上属性

2.简单使用

定义注解

  • 最常用的方式
      @Retention(RetentionPolicy.RUNTIME)
      @Target(ElementType.TYPE)
      public @interface CommonAnnotation {
    
          /**
          * 名字
          * @return
          */
          String name();
      }     
    
    • @Retention(RetentionPolicy.RUNTIME),直接cv大法,表示我们运行的时候注解还在,很少需要使用到其他两种情况
    • @Target(ElementType.METHOD),直接cv大法,表示这个注解将用于注解方法,编译器会帮我们检查,如果报错就去添加或者替换成我们需要的类型
  • 定义一个注解
    • 关键字: @interface
    • 元注解:@Retention、@Target、@Inherited、@Documented
    • 字段,写成一个抽象方法的形式

元注解

  • @Retention
    • 用来指定注解的存活期
    • 值:SOURCE、CLASS、RUNTIME
  • 分别表示:
    • source 这个注解除了源文件会存在就没了、
    • class 这个注解比上个命长点,能扛到编译后,运行时就没了、
    • runtime 这个注解会存活到运行时,命最长
  • @Target
    • 用来说明这个注解可以用来注释哪些地方,例如:类、方法、字段、参数、注解等等
    • 很简单,根据需求来就好了
    • 那么有个问题,如果我声明用于方法,但是我把注解写到类上会报错吗?
      实践证明,编译器会帮我报错出来,所以,乱写就行了,有报错再纠错
  • @Inherited
    • 一般用来那些修饰类的注解,那么他的子类可以继承这个注解
    • 注解继承说得这个,注解A用这个注解(@Inherited)标识了,那么类ObjectA表示了注解A,类ObjectB直接继承ObjectA就可以获得注解A
    • 仅此而已,也是很有用的
  • @Documented
    • 标识哪些类在生成文档时,能上文档

标准注解

  • @Override
    重写 、覆盖某个方法
  • @Deprecated
    方法或者类废弃了
  • @SuppressWarnings
    标识这个代码安全,不要给我警告个不停

todo

  • spring的组合注解
  • 阅读《java编程思想》的相关章节
  • 阅读《java核心卷》的相关章节
  • 列举例子
  • 写出自己的理解
  • 了解并写个类似lombok的demo
  • 根据@Documented生成一个jdk文档来看看

参考文档

原文地址:https://www.cnblogs.com/cgengwei/p/14044752.html