文章目录1. 注解的分类2. 元注解3. 注解元素4. 内置注解5. 注解的提取6. 自定义注解 注解在一定程度上是在把元数据与源代码文件结合在一起,而不是保存在外部文档中这一大的趋势下所催生的。注解可以提供用来完整的描述程序所需的信息,而这些信息是无法用Java来表达的。 因此,注解存储有关程序的额外信息,是可以由编译器来测试和验证的。注解还可以用来生成描述符文件,甚至是新的类定义,并且有助于减轻编写“样板”代码的负担。通过使用注解,我们可以将这些元数据保存在Java源代码中,并利用 annotation API 为自己的注解构造处理工具,同时注解的优点还包括:更加干净易读的代码以及编译器类 【Java基础:Annotation】 注解(Annotation)是Java编程语言中的一个重要特性,它提供了一种安全的方法来将元数据(metadata)与源代码关联起来。元数据是关于数据的数据,通常用于提供额外的信息,这些信息可能无法直接用编程语言表达。通过注解,开发者可以向编译器、JVM或工具提供额外的指令,比如代码的验证规则、代码生成、运行时行为控制等。 1. **注解的分类** - **源码注解**:仅存在于源代码中,编译后不保留。 - **编译时注解**:编译后仍保留在.class文件中,例如`@Override`, `@Deprecated`, `@SuppressWarnings`。 - **运行时注解**:在运行时仍然有效并可能影响程序执行,如`@Autowired`。 2. **元注解** - **@Target**:定义注解可以应用到哪些程序元素,如类、方法、字段等。 - **@Retention**:决定注解的生命周期,何时会被保留。可以是SOURCE(编译时丢弃),CLASS(类文件中保留),RUNTIME(运行时保留)。 - **@Documented**:指示是否将注解包含到Javadoc中。 - **@Inherited**:允许子类继承父类的注解。 - **@Repeatable**:允许一个类型的注解在同一个元素上重复出现,需要配合一个容器注解使用。 3. **注解元素** - 注解元素是注解中定义的键值对,用于传递更具体的信息。它们可以有默认值,并且可以是基本类型、字符串、其他注解或者数组。 4. **内置注解** - Java提供了一些内置注解,如`@Override`(确保方法覆盖父类方法)、`@Deprecated`(标记已过时的API)、`@ SuppressWarnings`(抑制编译器警告)等。 5. **注解的提取** - 使用反射API可以读取运行时注解的信息,这对于运行时动态处理代码非常有用。 6. **自定义注解** - 开发者可以根据需求创建自己的注解,定义注解的元数据,并通过注解处理器(Annotation Processor)来实现相应的处理逻辑,例如代码生成、验证等。 注解的使用场景广泛,例如: - 提供编译器检查:例如,`@NonNull`注解可以用来检测空指针。 - 生成代码:如JSR 250的`@PostConstruct`和`@PreDestroy`可以生成初始化和清理代码。 - AOP(面向切面编程):Spring框架的`@Transactional`用于声明事务管理。 - 运行时行为控制:`@Scheduled`用于调度任务。 使用注解可以使代码更加整洁、易读,减少样板代码,同时增强编译器的检查能力。通过自定义注解和注解处理器,开发者可以创建出更强大的工具链,以适应各种特定的开发需求。
剩余6页未读,继续阅读
- 粉丝: 4
- 资源: 904
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0