自定义注解
发布日期:2021-05-06 15:52:10 浏览次数:36 分类:精选文章

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

Java注解详解:从基础到实践

1. 声明注解

在Java中,注解是通过使用@interface关键字来声明的。以下是创建一个注解的基本步骤:

  • 修饰符:注解可以使用修饰符,但如果没有明确指定,默认为public
  • 注解名称:自定义注解的名称,需遵循Java命名规范。
  • 注解类型元素:使用ElementType枚举来定义注解作用的Java元素类型。
  • 示例

    @Target({ElementType.FIELD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Info {
    String value() default "tracy";
    boolean isDelete();
    }

    2. 元注解

    元注解用于控制注解的应用范围和生命周期。

    2.1 @Target

    • 描述:指定注解适用的Java元素类型。
    • 类型ElementType.TYPE(类、接口、枚举)、ElementType.FIELD(字段)、ElementType.METHOD(方法)、ElementType.PARAMETER(方法参数)、ElementType.CONSTRUCTOR(构造函数)、ElementType.LOCAL_VARIABLE(局部变量)、ElementType.ANNOTATION_TYPE(注解类型)、ElementType.PACKAGE(包)、ElementType.TYPE_PARAMETER(类型变量,Java 1.8及以上)、ElementType.TYPE_USE(类型使用,Java 1.8及以上)。

    2.2 @Retention

    • 描述:指定注解的生命周期。
    • 类型
      • RetentionPolicy.SOURCE:注解在编译时被丢弃,不包含在类文件中。
      • RetentionPolicy.CLASS:注解在JVM加载时被丢弃,包含在类文件中,默认值。
      • RetentionPolicy.RUNTIME:注解在运行时由JVM加载,包含在类文件中。

    2.3 @Documented

    • 描述:标记注解的元信息可以被Javadoc或文档工具处理。

    2.4 @Inherited

    • 描述:标记注解可以被子类继承。

    3. 注解配置

    3.1 属性定义

    注解可以包含抽象方法或常数值属性,使用默认值可简化使用。

    3.2 元注解结合

    通过组合多个元注解,灵活控制注解的应用范围和生命周期。


    4. 注解使用示例

    4.1 注解定义

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface MyAnnotation {
    String name();
    }

    4.2 注解使用

    @MyAnnotation(name = "MyClass")
    public class MyClass {
    // ...
    }

    4.3 元注解应用

    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface FieldAnnotation {
    String description();
    }

    4.4 动态获取注解

    public class AnnotationTest {
    public static void main(String[] args) {
    Person person = Person.builder().build();
    Class clazz = person.getClass();
    if (clazz.isAnnotationPresent(Info.class)) {
    Info infoAnno = (Info) clazz.getAnnotation(Info.class);
    System.out.println("Name: " + infoAnno.value() + ", Delete: " + infoAnno.isDelete());
    } else {
    System.out.println("No Info annotation present!");
    }
    }
    }

    通过以上内容,可以清晰地了解Java注解的基本使用方法和元注解的应用场景。从声明注解到实际使用,每一步都可以根据实际需求进行调整和优化。

    上一篇:手把手教你实现typora在线存放图片(无脑简单)
    下一篇:IDEA的DeBug使用

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2025年04月27日 14时23分29秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    2025年中国云计算市场四大趋势前瞻,从零基础到精通,收藏这篇就够了! 2025-03-29
    .off打开方式、文件格式和使用代码(Python示例) 2025-03-29
    2025年十大最佳漏洞管理工具,从零基础到精通,收藏这篇就够了! 2025-03-29
    2025年网络安全五大趋势与十大威胁预测,从零基础到精通,收藏这篇就够了! 2025-03-30
    2025想做黑客?先来学习 SQL 注入,零基础入门到精通,收藏这篇就够了 2025-03-30
    2025春招计算机就业哪些方向最香?零基础入门到精通,收藏这篇就够了 2025-03-30
    2025最全版《安全技术交底》.docx。从零基础到精通,收藏这篇就够了! 2025-03-30
    2025最新大模型技术学习过程梳理,零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版万字长文入门大语言模型(LLM)零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版最新0基础怎么转行网络安全?零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版最新Bash Shell入门指南,零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版最新C++快速入门(适合小白)零基础入门到精通,收藏这篇就够了 2025-03-30
    (建议收藏)五款常用优秀的Vue日历组件推荐 纯前端实现 无需额外依赖 2025-03-30
    2025版最新CTF选手必藏的50个实战解题思路,零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版最新Java教程(非常详细)零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版最新Kali Linux渗透测试教程(全面详细)零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版最新LangChain框架快速入门,零基础入门到精通,收藏这篇就够了 2025-03-30
    2025版最新Metasploit安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-30
    2025版最新Nessus 工具介绍与使用教程,零基础入门到精通,收藏这一篇就够了 2025-03-30
    2025版最新wireshark怎么抓包?Wireshark入门指南,零基础入门到精通,收藏这篇就够了 2025-03-30