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](https://github.com/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](https://github.com/FunctionalInterface "@FunctionalInterface")註解。

註解Java包

要註解一個Java包,創建一個名爲package-info.java的文件,並將註解包聲明放在這個文件中。以下代碼顯示了package-info.java文件的內容。

// package-info.java
@Version(major=1, minor=0)
package  com.yiibai.annotation;