跳到主要内容

Java 注解详解

常用注解

在日常的 Java 开发中,我经常使用一些注解来提高代码的可读性和可靠性。

@Override 用于指示当前方法重写了父类的方法。使用这个注解,可以让编译器检查方法签名是否正确,避免由于方法名或参数不匹配而导致的错误。

@Deprecated 表示某个程序元素已经过时,不建议继续使用。当我在代码中遇到被标记为 @Deprecated 的方法或类时,会考虑使用其替代方案。

@SuppressWarnings 用于指示编译器忽略特定的警告。当我确信某些警告可以安全地忽略时,会使用这个注解来保持代码的整洁。

@SafeVarargs 表示方法或构造函数在使用可变参数时是类型安全的,可以避免不受检查的泛型参数类型警告。

@FunctionalInterface 用于声明一个接口是函数式接口,即仅包含一个抽象方法的接口。在使用 Lambda 表达式和方法引用时,这个注解非常有用。

元注解

元注解用于定义其他注解的行为。

@Target 指定注解可以应用于哪些 Java 元素,例如类、方法、字段等。

@Retention 指定注解的保留策略,确定注解在源代码、字节码或运行时的可见性。

@Documented 表示使用该注解的元素会被 Javadoc 等工具文档化。

@Inherited 指定该注解可以被子类继承。

@Repeatable 允许在同一个元素上多次使用同一个注解。

Java 9 模块化系统中的关键字

在 Java 9 中,引入了模块化系统,提升了应用程序的可维护性和安全性。在 module-info.java 文件中,我可以使用以下关键字来定义模块:

module 用于声明模块的名称。

requires 指定当前模块依赖的其他模块。

exports 指定当前模块向其他模块公开的包。

opens 指定哪些包对其他模块开放反射访问。

uses 声明当前模块使用的服务接口。

provides 声明当前模块提供的服务实现。

需要注意的是,这些关键字不是注解,而是 Java 模块系统的语法元素。