Java 枚举与注解
本章我们将学习两个 Java 中用于定义类型和元数据的重要概念:枚举(Enumeration)和注解(Annotation)。
枚举 (Enum)
枚举是一种特殊的 Java 类,它允许我们为一组固定的常量赋予有意义的名称。使用枚举可以增强代码的可读性、类型安全性和可维护性。
- 使用
enum关键字来定义一个枚举类型。 - 枚举的常量成员在内部都是
public static final的,且它们是该枚举类型的实例。
定义和使用枚举
带属性和方法的枚举
枚举远比一组常量要强大。它可以拥有自己的属性、构造方法和普通方法。
- 枚举的构造方法必须是
private或包私有的。 - 定义常量时,可以通过括号传递参数给构造方法。
注解 (Annotation)
注解是添加到 Java 代码中的一种元数据 (Metadata)。它们本身不直接影响代码的执行,但可以被编译器、工具或运行时库读取和处理,以实现特定的功能。
注解的用途
- 为编译器提供信息:例如
@Override告诉编译器一个方法是重写父类的方法,如果不是,编译器会报错。 - 编译时处理:软件工具可以处理注解信息来生成代码、XML 文件等。
- 运行时处理:一些注解可以在程序运行时通过反射被读取,从而影响程序的行为。
内置注解
Java 提供了一些标准的内置注解:
@Override: 检查该方法是否是重写父类或实现接口中的方法。@Deprecated: 标记一个元素(类、方法等)已过时,不推荐使用。编译器会发出警告。@SuppressWarnings: 告诉编译器忽略指定的警告信息。@FunctionalInterface(Java 8+): 标记一个接口是函数式接口(只有一个抽象方法)。
自定义注解
我们也可以创建自己的注解。定义注解使用 @interface 关键字。
自定义注解通常与反射 (Reflection) 结合使用,在运行时检查类或方法上是否存在某个注解,并根据注解的元素值来执行相应的逻辑。这在许多框架(如 Spring、JUnit)中被广泛应用。