博客
关于我
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/

    你可能感兴趣的文章
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>
    notepad++最详情汇总
    查看>>
    notepad如何自动对齐_notepad++怎么自动排版
    查看>>
    Notification 使用详解(很全
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    Now trying to drop the old temporary tablespace, the session hangs.
    查看>>
    nowcoder—Beauty of Trees
    查看>>
    np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
    查看>>
    np.power的使用
    查看>>
    NPM 2FA双重认证的设置方法
    查看>>
    npm build报错Cannot find module ‘webpack‘解决方法
    查看>>
    npm ERR! ERESOLVE could not resolve报错
    查看>>
    npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
    查看>>
    npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
    查看>>
    npm install digital envelope routines::unsupported解决方法
    查看>>
    npm install 卡着不动的解决方法
    查看>>
    npm install 报错 EEXIST File exists 的解决方法
    查看>>
    npm install 报错 ERR_SOCKET_TIMEOUT 的解决方法
    查看>>
    npm install 报错 fatal: unable to connect to github.com 的解决方法
    查看>>