Java標準註解


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.yiibai.annotation;