Java API定義了許多標準注解類型。
以下部分將討論在java.lang
包中定義的四種最常用的標準注解。
- Deprecated
- Override
- SuppressWarnings
- FunctionalInterface
已棄用的注解類型 - Deprecated
棄用的注解類型是標記注解類型。 它標記了已棄用的代碼元素。使用已棄用的程式元素將導致編譯器生成警告。
@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
覆蓋注解類型是只能在方法上使用的標記注解類型。它表示方法覆蓋在其超類中聲明的方法。
如果要覆蓋超類中的一個方法,建議使用@Override
注解覆蓋的方法。編譯器將確保注解的方法真正覆蓋超類中的一個方法。
如果注解的方法不覆蓋超類中的方法,編譯器將生成錯誤。
class A {
public void m1() {
}
}
class B extends A {
@Override
public void m1() {
}
}
抑制警告注解類型 - SuppressWarnings
抑制警告(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)。如果使用此注解的介面不是函數介面,則會生成編譯時錯誤。
@FunctionalInterface
interface MyThread{
void run();
}
只有抽象方法的介面是一個功能介面,不管它是否用@FunctionalInterface
注解。
注解Java包
要注解一個Java包,創建一個名為package-info.java
的檔,並將注解包聲明放在這個檔中。以下代碼顯示了package-info.java
檔的內容。
// package-info.java
@Version(major=1, minor=0)
package com.zaixian.annotation;