Java 注解
Java 注解
注解是您添加到 Java 代码中的特殊注释。它们以@符号开头。
它们不会改变程序的运行方式,但它们会向编译器或工具提供额外信息。
内置注解
Java 包含多个内置注解。以下是一些最常用的注解:
| 注解 | 描述 |
|---|---|
@Override |
指示方法重写了超类中的方法 |
@Deprecated |
将方法或类标记为已过时或不建议使用 | @SuppressWarnings |
告诉编译器忽略某些警告 |
@Override 注解
@Override 注解可以帮助编译器检查一个方法是否确实重写了父类中的方法。
虽然不是必需的,但强烈建议使用,因为它有助于捕获错误。
在这个例子中,我们清楚地表明我们正在重写一个方法:
示例
class Animal {
void makeSound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Woof!");
}
}
如果您不小心写错了方法名(例如 makesound()),编译器会显示类似这样的错误:
示例
class Animal {
void makeSound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
@Override
void makesound() { // Typo here!
System.out.println("Woof!");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.makeSound();
}
}
结果:
Main.java:8: error: method does not override or implement a method from a supertype
@Override
^
1 error
这就是 @Override 的强大之处——它可以防止悄无声息的错误。
如果您尝试删除上面示例中的 @Override 行,编译器不会发出警告,该方法也不会覆盖任何现有方法。你的程序可能仍然可以运行,但可能会出现意想不到的行为,因为目标方法实际上从未被覆盖。
@Deprecated 注解
@Deprecated 注解会警告开发者不要使用某个方法,因为它将来可能会被移除或替换:
示例
public class Main {
@Deprecated
static void oldMethod() {
System.out.println("This method is outdated.");
}
public static void main(String[] args) {
oldMethod(); // 这会在大多数集成开发环境(IDE)中显示警告。
}
}
即使该方法运行并打印了消息,大多数 IDE 或编译器仍会显示类似这样的警告:
warning: [deprecation] oldMethod() in Main has been deprecated
@SuppressWarnings 注解
@SuppressWarnings 注解告诉编译器忽略特定的警告,例如"unchecked"或"deprecation":
示例
import java.util.ArrayList;
public class Main {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
ArrayList cars = new ArrayList();
cars.add("Volvo");
System.out.println(cars);
}
}
结果:
[Volvo]
使用原始类型(例如 ArrayList)而不指定类型(例如 ArrayList)通常会导致"unchecked(未检查)"警告。
注解 @SuppressWarnings("unchecked") 会告诉编译器忽略该警告。这在处理旧代码或确定操作安全时非常有用。
不过,与其隐藏警告,不如像这样修复它:
ArrayList<String> cars = new ArrayList<>();
这种方法是类型安全的,并且避免了抑制的需要。

