Java API定義了許多標準註解型別。
以下部分將討論在java.lang
包中定義的四種最常用的標準註解。
棄用的註解型別是標記註解型別。 它標記了已棄用的程式碼元素。使用已棄用的程式元素將導致編譯器生成警告。
@Deprecated
class MyClass {
private MyClass() {
}
public static MyClass getInstance() {
MyClass dt = new MyClass();
return dt;
}
}
public class Main {
public static void main(String[] args) {
MyClass dt; // Generates a compile-time note
}
}
覆蓋註解型別是只能在方法上使用的標記註解型別。它表示方法覆蓋在其超類中宣告的方法。
如果要覆蓋超類中的一個方法,建議使用@Override
註解覆蓋的方法。編譯器將確保註解的方法真正覆蓋超類中的一個方法。
如果註解的方法不覆蓋超類中的方法,編譯器將生成錯誤。
class A {
public void m1() {
}
}
class B extends A {
@Override
public void m1() {
}
}
抑制警告(SuppressWarnings)註解型別用於抑制命名編譯器警告。它宣告一個名為value
的元素,其資料型別是一個String
陣列。
import java.util.ArrayList;
public class Main {
@SuppressWarnings("unchecked")
public void test() {
@SuppressWarnings("rawtypes")
ArrayList list = new ArrayList();
list.add("Hello"); // The compiler issues an unchecked warning
}
}
具有一個抽象方法宣告的介面被稱為功能介面( - FunctionalInterface)。如果使用此註解的介面不是函式介面,則會生成編譯時錯誤。
@FunctionalInterface
interface MyThread{
void run();
}
只有抽象方法的介面是一個功能介面,不管它是否用@FunctionalInterface
註解。
要註解一個Java包,建立一個名為package-info.java
的檔案,並將註解包宣告放在這個檔案中。以下程式碼顯示了package-info.java
檔案的內容。
// package-info.java
@Version(major=1, minor=0)
package com.yiibai.annotation;