博客
关于我
java中的注解(Annotation)学习记录
阅读量:168 次
发布时间:2019-02-28

本文共 1836 字,大约阅读时间需要 6 分钟。

Java注解(Annotation)详解

Java注解(Annotation)又称Java标注,是JDK5.0引入的一种注释机制。它在Java语言中广泛应用于类、方法、变量、参数和包等多个层面,与Javadoc不同,Java标注可以通过反射获取标注内容。


Annotation架构

Java注解的架构主要由以下三个核心组件组成:

  • Annotation接口:每个注解都必须实现Annotation接口。Annotation接口定义了几个核心方法,包括equalshashCodetoString,用于支持注解的比较、存储和表示。

  • ElementType枚举类型:用于指定注解作用的目标元素类型。ElementType是一个枚举类型,涵盖了类、接口、方法、字段、参数、构造函数、局部变量以及包等多种元素类型。

  • RetentionPolicy枚举类型:用于指定注解的保留策略。RetentionPolicy也是一个枚举类型,定义了注解在编译、类文件和运行时的保存方式。


  • Annotation的作用

  • 编译检查

    Java注解可以用于编译时的语法检查。例如:

    • @Override用于标注重载方法,确保方法确实是重载。
    • @ Deprecated用于标注过时的代码,提示开发者避免使用。
  • 反射支持

    Java注解提供了反射支持,允许在运行时获取和处理注解信息。开发者可以通过反射API动态获取注解信息,进行各种自定义处理。

  • 文档生成

    如果注解类被标注@Documented,它的内容会包含在Javadoc中,便于生成文档。

  • 代码可读性

    Java注解可以用来增加代码的可读性和可维护性,帮助开发者理解代码的结构和意图。


  • 常用注解

    Java平台提供了一套内置注解,主要用于常见场景:

    1. 内置注解

    • @Override:标注方法,确保其是重载方法。
    • @Deprecated:标注过时的代码。
    • @SuppressWarnings:忽略编译器警告。

    2. 元注解(Annotation的注解)

    • @Retention:指定注解的保留策略。
    • @Target:指定注解作用的目标元素类型。
    • @Documented:标注注解是否包含在Javadoc中。
    • @Inherited:标注注解是否具有继承性。

    3. Java 7及以上新增注解

    • @SafeVarargs:忽略泛型变量的警告。
    • @FunctionalInterface:标识函数式接口。
    • @Repeatable:标注可重复使用的注解。

    Annotation的实现

    定义一个注解的步骤如下:

  • 使用@interface修饰注解接口。
  • 使用@Target指定注解作用的目标元素类型。
  • 使用@Retention指定注解的保留策略。
  • 其他可选项包括@Documented@Inherited等。
  • @Documented@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public interface MyAnnotation {    String value();}

    Annotation的示例

    以下是几个常见注解的示例:

  • @Override
  • @Overridepublic void doSomething() {    // 方法体}
    1. @Deprecated
    2. @Deprecatedpublic void oldMethod() {    // 方法体}
      1. @SuppressWarnings
      2. @SuppressWarnings(value = {"unchecked", "deprecation"})public class DeprecatedTest {    // 代码体}
        1. 自定义注解
        2. @Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation {    String description();}

          Annotation的优势

        3. 简化代码:注解可以用来减少代码中的重复信息。
        4. 提高可读性:通过注解明确代码的含义和用途。
        5. 动态性:通过反射可以在运行时获取和处理注解信息。
        6. 扩展性:支持自定义注解,满足个性化需求。

        7. 通过以上内容,Java注解的功能和使用场景应该已经清晰了。无论是编译检查、生成文档还是代码可读性,注解都发挥了重要作用。

    转载地址:http://pgfj.baihongyu.com/

    你可能感兴趣的文章
    Numpy如何使用np.umprod重写range函数中i的python
    查看>>
    numpy学习笔记3-array切片
    查看>>
    numpy数组替换其中的值(如1替换为255)
    查看>>
    numpy数组索引-ChatGPT4o作答
    查看>>
    NUMPY矢量化np.prod不能构造具有超过32个操作数的ufunc
    查看>>
    Numpy矩阵与通用函数
    查看>>
    numpy绘制热力图
    查看>>
    numpy转PIL 报错TypeError: Cannot handle this data type
    查看>>
    Numpy闯关100题,我闯了95关,你呢?
    查看>>
    nump模块
    查看>>
    Nutch + solr 这个配合不错哦
    查看>>
    NuttX 构建系统
    查看>>
    NutUI:京东风格的轻量级 Vue 组件库
    查看>>
    NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
    查看>>
    NutzWk 5.1.5 发布,Java 微服务分布式开发框架
    查看>>
    NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
    查看>>
    Nuxt Time 使用指南
    查看>>
    NuxtJS 接口转发详解:Nitro 的用法与注意事项
    查看>>
    NVDIMM原理与应用之四:基于pstore 和 ramoops保存Kernel panic日志
    查看>>
    NVelocity标签使用详解
    查看>>