Java注解的用法(附带实例)
注解(Annotation)是一种特殊的注释信息,它可以对类、接口、方法以及属性进行描述以提供额外的补充信息。
我们知道注释信息会被编译器忽略,而注解则会被编译器和 JVM 利用起来从而实现某些功能。Java 中的注解都是以 @ 开头,比如 @Override 注解作用在某个方法上表示重写方法,注解并不会改变程序运行的结果。
JDK 为我们提供了一些常用的内置注解,包括 @Override、@Deprecated 和 @SuppressWarnings 等。
@Override 主要有以下两个好处:
我们来看一段实例程序:
下图是 @Deprecated 的示例:
我们将 DeprecatedClass 类、类属性以及方法都标注为 @Deprecated,此时如果使用该类则编译器会提示警告,不过还是能正常运行。
通常我们在确认编译器的警告没问题的情况下,可以使用 @SuppressWarnings 注解来消除这些警告信息。@SuppressWarnings 注解一般作用在类或方法上,对应不同的作用范围。
@SuppressWarnings 注解的方式如下:
下面是 @SuppressWarnings 注解的示例:
当我们想要抑制多种警告类型时可以按如下实例代码中数组的形式实现。当然如果想抑制全部警告信息,可以使用 @SuppressWarnings("all")。
我们知道注释信息会被编译器忽略,而注解则会被编译器和 JVM 利用起来从而实现某些功能。Java 中的注解都是以 @ 开头,比如 @Override 注解作用在某个方法上表示重写方法,注解并不会改变程序运行的结果。
JDK 为我们提供了一些常用的内置注解,包括 @Override、@Deprecated 和 @SuppressWarnings 等。
Java @Override注解
@Override 表示某个类重写了父类或接口的方法,它只能用于标注在方法上。@Override 主要有以下两个好处:
- 使代码可读性更高,当我们阅读代码时,看到 @Override 就知道对应的方法重写了父类或接口的方法。
- 协助检查代码,通过 @Override 注解的方法能确保子类与父类或接口之间方法声明的一致性,假如不小心修改导致不一致则编译器会自动检查并报错。
我们来看一段实例程序:
public class AnnotationOverrideTest implements AA { @Override public String toString() { return "Hello"; } @Override public void test() { System.out.println("test"); } } interface AA { public void test(); }AnnotationOverrideTest 类的两个方法都使用了 @Override 注解,其中 toString() 方法重写了 Object 类的 toString() 方法,而 test() 方法则是 AA 接口定义的方法。这样我们在阅读代码时就知道这两个方法都是重写了父类或接口的方法,而且编译器会保证它们与原方法声明的一致性。
Java @Deprecated注解
@Deprecated 注解可用于标注类、方法和属性,表示对应的类、方法或属性已经弃用了,不推荐使用,编译器会对调用被 @Deprecated 标注的元素给出警告信息。下图是 @Deprecated 的示例:

我们将 DeprecatedClass 类、类属性以及方法都标注为 @Deprecated,此时如果使用该类则编译器会提示警告,不过还是能正常运行。
注意,不一定要在所有地方都标注 @Deprecated,哪个元素被标注则在使用该元素时就会被提示警告。
Java @SuppressWarnings注解
@SuppressWarnings 注解用于抑制警告信息,也就是告知编译器可以忽略哪些特定警告信息。通常我们在确认编译器的警告没问题的情况下,可以使用 @SuppressWarnings 注解来消除这些警告信息。@SuppressWarnings 注解一般作用在类或方法上,对应不同的作用范围。
@SuppressWarnings 注解的方式如下:
@SuppressWarnings("") @SuppressWarnings({}) @SuppressWarnings(value={})其中小括号中指定要抑制的警告信息类型,可以是字符串也可以是数组。@SuppressWarnings 包含了一个 value 属性,前两种方式省略了该属性名,而最后一种方式则显式写明了 value 属性。
下面是 @SuppressWarnings 注解的示例:
public class AnnotationSuppressWarningsTest { @SuppressWarnings("rawtypes") public static List createList() { List list = new ArrayList(); return list; } }List 需要指定泛型类型,这里我们没有指定,所以编译器会产生警告信息,这种情况下我们可以通过 @SuppressWarnings("rawtypes") 清除警告信息。
当我们想要抑制多种警告类型时可以按如下实例代码中数组的形式实现。当然如果想抑制全部警告信息,可以使用 @SuppressWarnings("all")。
public class AnnotationSuppressWarningsTest { @SuppressWarnings({ "rawtypes", "unchecked" }) public static List createList(String s) { List list = new ArrayList(); list.add(s); return list; } }