当前位置: 首页 > news >正文

JavaSE核心知识点03高级特性03-05(注解)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

    • JavaSE核心知识点03高级特性03-05(注解)
      • 一、注解是什么?
        • 类比理解:
      • 二、Java 内置的常用注解
        • 1. `@Override`
        • 2. `@Deprecated`
        • 3. `@SuppressWarnings`
      • 三、如何自定义注解?
        • 1. 定义注解
        • 2. 元注解(Meta-Annotation)
      • 四、注解的处理方式
        • 1. 反射处理(运行时)
        • 2. 编译时处理(如 Lombok)
      • 五、实际应用场景
      • 六、注意事项
      • 七、总结


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

在这里插入图片描述

JavaSE核心知识点03高级特性03-05(注解)

好的!我来为你详细讲解 Java 中的注解(Annotation),内容会循序渐进,尽量通俗易懂。以下是完整的学习路径:


一、注解是什么?

注解(Annotation)是 Java 中的一种元数据(描述数据的数据),它本身不直接影响代码逻辑,但可以为代码提供额外的信息。类似于“标签”,用来标记代码的特殊行为或配置。

类比理解:
  • 想象你在一本书上贴便利贴,便利贴本身不改变书的内容,但能提醒你注意某些部分(如“重点”、“待办”)。注解的作用类似。

二、Java 内置的常用注解

Java 提供了一些内置注解,以下是几个常见的:

1. @Override
  • 作用:标记方法是为了覆盖父类或接口中的方法。
  • 示例
    @Override
    public String toString() {return "This is a custom toString()";
    }
    
  • 用途:帮助编译器检查是否正确覆盖了父类方法(避免拼写错误)。
2. @Deprecated
  • 作用:标记方法、类或字段已过时,不推荐使用。
  • 示例
    @Deprecated
    public void oldMethod() {// 过时的方法
    }
    
  • 效果:调用该方法时,编译器会生成警告。
3. @SuppressWarnings
  • 作用:抑制编译器警告。
  • 示例
    @SuppressWarnings("unchecked")
    public void someMethod() {List list = new ArrayList(); // 这里会有“未检查类型”的警告,但被注解抑制
    }
    

三、如何自定义注解?

你可以创建自己的注解,以下是步骤:

1. 定义注解

使用 @interface 关键字:

// 定义一个名为 MyAnnotation 的注解
public @interface MyAnnotation {String value() default ""; // 注解的参数int priority() default 0;
}
2. 元注解(Meta-Annotation)

元注解是用于修饰注解的注解,用来定义注解的行为:

元注解作用
@Target指定注解可以应用的位置(如类、方法、字段等)。
@Retention指定注解的保留策略(源码级、编译期、运行时)。
@Documented注解会被包含在 Javadoc 中。
@Inherited子类可以继承父类的注解。

示例:定义一个用于方法的运行时注解

import java.lang.annotation.*;@Target(ElementType.METHOD) // 只能用在方法上
@Retention(RetentionPolicy.RUNTIME) // 运行时保留
public @interface MyMethodAnnotation {String description() default "默认描述";boolean enabled() default true;
}

四、注解的处理方式

注解本身没有行为,需要通过反射或编译时处理来触发逻辑。

1. 反射处理(运行时)

通过反射读取注解信息:

public class Test {@MyMethodAnnotation(description = "这是一个测试方法")public void testMethod() {// 方法内容}public static void main(String[] args) throws NoSuchMethodException {Method method = Test.class.getMethod("testMethod");if (method.isAnnotationPresent(MyMethodAnnotation.class)) {MyMethodAnnotation annotation = method.getAnnotation(MyMethodAnnotation.class);System.out.println("描述:" + annotation.description()); // 输出:这是一个测试方法System.out.println("是否启用:" + annotation.enabled()); // 输出:true}}
}
2. 编译时处理(如 Lombok)

通过注解处理器(Annotation Processing Tool, APT)在编译时生成代码。例如 Lombok 的 @Data 注解会自动生成 getter/setter。


五、实际应用场景

  1. 框架配置(如 Spring):

    @Service
    public class UserService {@Autowiredprivate UserRepository userRepository;
    }
    
  2. 单元测试(如 JUnit):

    @Test
    public void testAddition() {assertEquals(4, 2 + 2);
    }
    
  3. 序列化/反序列化(如 Jackson):

    public class User {@JsonProperty("user_name")private String userName;
    }
    

六、注意事项

  1. 保留策略:如果需要在运行时获取注解,必须设置 @Retention(RetentionPolicy.RUNTIME)
  2. 目标范围:用 @Target 明确注解的应用位置(如 ElementType.TYPE 表示类)。
  3. 默认值:注解参数需定义默认值(如 default ""),否则使用时必须显式赋值。
  4. 参数类型限制:注解的参数只能是基本类型、String、Class、枚举或数组。

七、总结

  • 注解的作用:提供元数据,辅助代码分析或配置。
  • 核心步骤:定义注解 → 用元注解修饰 → 处理注解逻辑(反射/APT)。
  • 学习建议:从简单注解开始,尝试结合反射实现功能(如自定义日志注解)。

动手练习:

  1. 定义一个注解 @LogExecutionTime,用于记录方法的执行时间。
  2. 通过反射在方法执行前后计算时间差。

如果有疑问,可以随时提出!



📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

相关文章:

  • C# Windows Forms应用程序-002
  • 2025.5.25总结
  • Linux基本指令篇 —— whoami指令
  • 【多线程】Java 实现方式及其优缺点
  • 【数据结构】图论探秘:广度优先遍历(BFS)与生成树的构建艺术
  • 篇章二 数据结构——前置知识(二)
  • C++修炼:哈希表的模拟实现
  • 篇章一 数据结构——前置知识(一)
  • 数据结构之图结构
  • Mysql高版本(8.0及以后)Linux安装
  • leetcode hot100刷题日记——第一周没做好的题目总结
  • 深度图数据增强方案-随机增加ROI区域的深度
  • 机器学习--分类算法
  • vllm 2080TI ubuntu环境安装
  • 精选19道SQL面试题:覆盖查询、概念与常见陷阱
  • 论文阅读:PURPLE: Making a Large Language Model a Better SQL Writer
  • 【Stock】日本蜡烛图技术总结(1)——反转形态
  • 使用CentOS部署本地DeekSeek
  • React从基础入门到高级实战:React 核心技术 - 组件通信与 Props 深入
  • 只能上百度b站打不开其他网页
  • 北京注册网站/市场推广
  • 门户网站模板源码/seo运营是什么意思
  • 门户网站建设投标书/网站后台管理系统
  • 内蒙建设厅官方网站/医院营销策略的具体方法
  • 企业简介 网站建设/经典软文案例200字
  • 广州一起做网站/门户网站软文