From 49757a4d9022b66742d0142f41ddfb66fcb9ac0d Mon Sep 17 00:00:00 2001 From: wu <303054730@qq.com> Date: Mon, 21 Oct 2024 13:33:46 +0800 Subject: [PATCH] edit --- docs/chapter05.md | 58 +++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/docs/chapter05.md b/docs/chapter05.md index 92537bb..3ed6b8a 100644 --- a/docs/chapter05.md +++ b/docs/chapter05.md @@ -44,49 +44,47 @@ 参考[java注解是怎么实现的?](https://www.zhihu.com/question/24401191) -- **定义**: -> java注解又叫做java标注,是java的一种注释机制,在jdk5.0引入。其可以作用在类、方法、变量、参数和包上。注解是用于向编译器或框架提供元数据的一种机制。 -- **注解定义的语法** +> 注解 (Annotation),也叫元数据。一种代码级别的说明。它是 JDK1.5 及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 +> +> ——摘自百度百科 + +> 元数据: 说明数据的数据 + +**注解定义的语法** ```java public @interface 注解名称{ 属性列表; } ``` -- **类型**: - - **元注解**: 用于修饰其他注解。 - - **内置注解**: 如`@Override`, `@Deprecated`, `@SuppressWarnings`等。 - - **自定义注解**: 自定义注解就是我们自己写的注解,来满足特定需求。 - - **第三方框架定义的注解**: 比如SpringMVC的@Controller等,也可归于自定义注解。 -- **使用场景**: - - **元数据**: 为框架提供元数据。 - - **代码生成**: 用于生成代码。 - - **编译时处理**: 用于编译时的代码处理。 +**类型**: + - **元注解**: 用于注解其他注解的注解,如@Retention和@Target。 + - **内置注解**: Java平台提供的注解,如`@Override`, `@Deprecated`, `@SuppressWarnings`等。 +- **自定义注解**: 我们自己写的注解。 很多第三方框架通过提供自定义注解来简化实现, 如spring框架提供了`@Autowired`、`@RequestMapping`等。 +**使用场景**: + - 为框架提供元数据,例如Spring框架使用注解来标记组件。 + - 用于代码生成,例如Lombok库使用注解来自动生成模板化的代码。 + - 用于编译时处理,例如通过注解来检查代码中的潜在错误。 -- **使用位置** +**使用位置** -实际开发中,注解常常出现在类、方法、成员变量、形参位置。当然还有其他位置。 +在实际开发中,注解可以出现在类、方法、成员变量、方法参数等多个位置。 -- **作用** +**作用** -如果说注释是写给人看的,那么注解就是写给程序看的。它更像一个标签,贴在一个类、一个方法或者字段上。它的目的是为当前读取该注解的程序提供判断依据及少量附加信息。比如程序只要读到加了@Test的方法,就知道该方法是待测试方法,又比如@Before注解,程序看到这个注解,就知道该方法要放在@Test方法之前执行。有时我们还可以通过注解属性,为将来读取这个注解的程序提供必要的附加信息,比如@RequestMapping("/user/info")提供了Controller某个接口的URL路径。 +如果说注释是写给人看的,那么注解就是写给程序看的。它更像一个标签,贴在一个类、一个方法或者字段上。它的目的是为当前读取该注解的程序提供判断依据及少量附加信息。例如: +- @Test 标记一个方法为测试方法。 +- @Before 标记一个方法在每个测试方法之前执行。 +- @RequestMapping("/user/info") 提供 Controller 所对应的某个 URL 路径。 -- **级别** +**级别** -注解和类、接口、枚举是同一级别的。注解的本质@interface和interface从名字上看非常相似。 +注解与类、接口、枚举处于同一级别。注解的本质类似于 @interface,与 interface 相似,但用于提供元数据。 -- **注解三角** - - 定义注解 - - 使用注解 - - 读取注解 +**注解三角** +- 定义注解: 创建注解。 +- 使用注解: 在代码中应用注解。 +- 读取注解: 通过反射或其他机制读取并处理注解。 - -**小结** - -- 注解就像标签,是程序判断执行的依据。比如,程序读到@Test就知道这个方法是待测试方法,而@Before的方法要在测试方法之前执行 -- 注解需要三要素:定义、使用、读取并执行 -- 注解分为自定义注解、JDK 内置注解和第三方框架注解。自定义注解需要开发者自己定义、使用和读取,而 JDK 内置注解和第三方注解通常只需要使用,定义和读取由框架或工具完成 - -#### 5.1.3 Optional的介绍和使用(了解) ### 5.1.3 `Optional` 的介绍和使用(了解) #### 定义