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.