Java 注解

Java注解

Java注解

概念

Java提供的一种原程序中的元素关联任何信息和任何元数据的途径和方法。

分类

  • 按运行机制
    • 源码注解
      注解只在源码存在,编译成.class文件就不存在了
    • 编译时注解
      在源码和.class文件中都存在(JDK中的注解)
    • 运行时注解
      在运行阶段还起作用,甚至会影响运行逻辑的注解(@Autowired)
  • 按照来源
    • JDK中的注解
    • 第三方注解
    • 自定义注解
  • 元注解
    注解的注解

JDK中的注解

  • @Override 重写父类或接口的某个方法,提醒编译器检测方法的正确性
  • @Deprecated 指定该方法过时
  • @Suppvisewarnings 忽略警告

常见第三方注解

  • Spring
    • @Autowired
    • @Service
    • @Repository
  • Mybatis
    • @InsertProvider
    • @UpdateProvider
    • @Options

自定义注解

语法要求

  • 成员类型受限,合法类型包括原始类型及String, Class, Annotation, Enumeration
  • 如果注解只有一个成员,则成员名必须为value(),使用时可以忽略成员名和赋值号
  • 注解类可以没有成员,没有成员的注解称为标识注解

元注解

  • @Target 定义注解的作用目标
    @Target(ElementType.TYPE) //接口、类、枚举、注解
    @Target(ElementType.FIELD) //字段、枚举的常量
    @Target(ElementType.METHOD) //方法
    @Target(ElementType.PARAMETER) //方法参数
    @Target(ElementType.CONSTRUCTOR) //构造函数
    @Target(ElementType.LOCAL_VARIABLE)//局部变量
    @Target(ElementType.ANNOTATION_TYPE)//注解
    @Target(ElementType.PACKAGE) ///包
  • @Retention 定义注解的保留策略
    @Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在.class字节码文件中不包含
    @Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在.class字节码文件中存在,但运行时无法获得,
    @Retention(RetentionPolicy.RUNTIME) // 注解会在.class字节码文件中存在,在运行时可以通过反射获取到
  • @Inherited 允许子类继承
  • @Documented 生成javadoc时会包含注解

发表评论

电子邮件地址不会被公开。 必填项已用*标注