Java标准注解

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