Java 中的注解符号@
本文将介绍@
符号,在 Java 中称为注解。我们将专注于内置 Java 注释,如 @Override
、@SuppressWarnings
和 @Deprecated
。
Java 中的@Override
注解
在 Java 中,注解是一种表示附加在类、接口和方法上的额外信息的方式。Java 编译器和 JVM 使用提供的信息和注解。注释以@
符号开头。@Override
注释确保子类方法覆盖父类方法。它是一个标记注释,因为它没有任何值或元素。当我们使用 @Override
注释时,编译器将生成错误并警告我们,如果在覆盖该方法时出现任何错误。它检查的可能错误是拼写错误以及参数和返回类型的错误。我们可以通过创建继承来演示 @Override
注释的使用。首先,我们不会使用注释,但稍后我们将使用它来演示@Override
的工作原理。
例如,创建一个类 Parent
并编写一个具有 void
返回类型的方法 message()
。在方法内打印一些消息。同样,创建另一个类 Child
,并扩展类 Parent
。使用 void
类型创建相同的方法 message
并在其中写入一条消息。在方法之前,写上注释@Override
。然后,在主类中,创建每个类的对象并调用 message()
方法。
在这里,子类继承了超类,每个类中的每个方法都可以毫无问题地调用。
示例代码:
class Annotation {
public static void main(String[] args) {
new Child().message();
new Parent().message();
}
}
class Parent {
void message() {
System.out.println("Invoked from the Parent class");
}
}
class Child extends Parent {
@Override
void message() {
System.out.println("Invoked from the Child class");
}
}
输出:
Invoked from the Child class
Invoked from the Parent class
将 Child
类中的 message()
方法修改为 mesage()
。然后,运行程序。它显示了以下输出。
输出:
Annotation.java:18: error: method does not override or implement a method from a supertype
在这里,我们更改了方法名称。有时,程序员在覆盖时可能会犯这种类型的错误。因此,@Override
注释可确保在覆盖方法时出现任何错误并提醒程序员。
Java 中的@SuppressWarnings
注解
@SuppressWarnings
注释告诉编译器抑制或忽略指定代码段的错误。我们可以将注解用于类型、字段、方法、参数、构造函数和局部变量。我们可以将注释括号之间的值 unchecked
指定为 @SuppressWarnings("unchecked")
以抑制错误。当我们在类之前使用注解时,它将抑制类内部的任何错误。当我们在类中的任何方法之前使用它时,它只会抑制来自该特定类的错误。
例如,导入 util
包并创建一个名为 Annotation
的类。在 main 方法之前写上@SuppressWarnings("unchecked")
。在 main 方法中,创建 ArrayList()
的实例并将其分配给 fruits
变量。然后,使用 add()
方法添加值 apple
和 mango
。最后,打印 fruits
变量。
在下面的示例中,我们从 util
包中导入了所有内容。它导入了我们之后使用的 ArrayList
类。上面的代码成功执行,虽然有错误。我们使用了非泛型集合 ArrayList
。我们没有在 <>
符号内指定类型。因此,代码是错误的。但它会执行,因为我们使用@SuppressWarnings
注释抑制了错误。
示例代码:
import java.util.*;
class Annotation {
@SuppressWarnings("unchecked")
public static void main(String args[]) {
ArrayList fruits = new ArrayList();
fruits.add("apple");
fruits.add("mango");
System.out.println(fruits);
}
}
输出:
[apple, mango]
如果我们对下面的代码不使用注解,编译器会显示如下错误。
输出:
Note: Annotation.java uses unchecked or unsafe operations.
Java 中的@Deprecated
注解
@Deprecated
注释用于将指定的代码段表示为不推荐使用的代码。当我们使用注释时,编译器会显示弃用警告。我们可以使用 @Deprecated
注释来注释类型、方法、字段和构造函数。
例如,创建一个类 Car
并创建一个带有参数 color
、length
和 width
的构造函数。在构造函数之前使用 @Deprecated
注释。让身体空着。创建另一个构造函数并在其中写入字符串参数 name
。创建另一个类 Annotation
,并在 main 方法中调用这两个构造函数。
在下面的示例中,我们在第一个构造函数之前使用了 @Deprecated
注释。它使编译器能够生成警告,指出构造函数已被弃用。通过这种方式,我们可以使用注释来指定代码中不推荐使用的内容。不鼓励删除已弃用的代码,因为它可用于在需要时回滚到以前的版本。鼓励在这种情况下使用新的替代方案。
示例代码:
class Annotation {
public static void main(String args[]) {
new Car("red", 550, 300);
new Car("Lambo");
}
}
class Car {
@Deprecated
Car(String color, int length, int width) {}
Car(String name) {}
}
输出:
Note: Annotation.java uses or overrides a deprecated API.