【JAVA】注解基础:元注解与自定义注解(30)
核心知识点详细解释
Java注解的基本概念和使用场景
基本概念
注解(Annotation)是 Java 5 引入的一种元数据机制,它可以为程序元素(类、方法、字段等)添加额外的信息。注解本身不会影响程序的逻辑,但可以在编译、运行时被读取和处理,从而实现一些特定的功能。例如,@Override
注解用于标记一个方法是重写父类的方法,编译器会检查该方法是否真的重写了父类的方法。
使用场景
- 编译时检查:如
@Override
注解,帮助编译器进行语法检查,确保方法重写的正确性。 - 代码生成:通过注解可以在编译时生成额外的代码,例如 Lombok 库使用注解来自动生成 getter、setter 等方法。
- 运行时配置:在运行时读取注解信息,进行配置和处理,例如 Spring 框架使用注解来进行依赖注入和组件扫描。
元注解的定义和作用
元注解是用于注解其他注解的注解,Java 提供了几个内置的元注解,主要包括:
@Retention
:指定注解的保留策略,即注解在什么阶段可用。它有三个取值:RetentionPolicy.SOURCE
:注解只在源码中保留,编译时会被丢弃。RetentionPolicy.CLASS
:注解在编译时保留在字节码中,但在运行时不会被加载。RetentionPolicy.RUNTIME
:注解在运行时也会被保留,可以通过反射机制读取。
@Target
:指定注解可以应用的程序元素类型,例如类、方法、字段等。可以使用ElementType
枚举来指定,如ElementType.TYPE
表示可以应用于类、接口等,ElementType.METHOD
表示可以应用于方法。@Documented
:指定注解是否会被包含在 JavaDoc 文档中。@Inherited
:指定注解是否可以被继承。如果一个类使用了带有@Inherited
注解的注解,那么它的子类也会继承该注解。
如何自定义Java注解
自定义注解需要使用 @interface
关键字,并且可以使用元注解来修饰。以下是一个自定义注解的示例:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;// 定义注解的保留策略为运行时
@Retention(RetentionPolicy.RUNTIME)
// 定义注解可以应用于类和方法
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface MyAnnotation {// 定义注解的属性,带有默认值String value() default