在 Java 中,可以使用注解(Annotation)来为代码提供额外的信息和元数据,从而提高代码的可读性和可维护性。注解可以应用于类、方法、变量等元素上,并可以通过反射机制在运行时获取注解信息。
除了一些常见的注解,如 @Override、@Deprecated、@SuppressWarnings 等,Java 还提供了一些冷门但有用的注解,例如:
-
@FunctionalInterface:该注解用于标记函数式接口,即只包含一个抽象方法的接口。使用该注解可以让编译器检查接口是否符合函数式接口的定义。
- @Repeatable:该注解用于标记可重复注解的容器注解,可以让一个注解可以多次应用于同一个元素。例如:
@Repeatable(Hints.class) public @interface Hint { String value(); } public @interface Hints { Hint[] value(); }
上面的代码定义了一个注解 Hint 和一个注解容器 Hints,其中 Hint 注解使用了 @Repeatable(Hints.class) 标记,表示可以多次应用于同一个元素,而 Hints 注解则是一个容器注解,用于存放 Hint 注解。
-
@SafeVarargs:该注解用于标记可安全使用可变参数的方法或构造函数,表示方法不会对传递进来的可变参数数组进行修改,从而避免了潜在的运行时错误。
-
@Native:该注解用于标记本地方法(native method),即使用非 Java 语言实现的方法。使用该注解可以告诉编译器该方法不是用 Java 实现的,从而让编译器跳过该方法的代码检查。
-
@Documented:该注解用于标记其他注解,表示被标记的注解会被包含在 Javadoc 中。