Java编译器在编译代码时,会产生一些安全警告信息。如果被@SuppressWarnings注解标记的元素,就可以告诉编译器抑制指定的警告。
先看看@SuppressWarnings注解在Java SE中的声明:
package java.lang;import java.lang.annotation.*;import static java.lang.annotation.ElementType.*;@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})@Retention(RetentionPolicy.SOURCE)public @interface SuppressWarnings { String[] value();}
由Java源代码声明我们了解到:@SuppressWarnings注解,可用于标记类、字段、方法、参数、构造方法和本地变量,并且它只在编译期生效,不会保留在class文件中。此注解声明的注解元素为String数组,意味着可以抑制多种警告。
接下来举例说明@SuppressWarnings注解的使用:
package org.springmorning.demo.javabase.annotation.pre;import java.util.*;/** * @author 春晨 * @date 2019/1/18 9:36 * Copyright ©2019 春晨 https://www.cnblogs.com/springmorning/p/10284244.html */public class SuppressWarningsAnnotation { //此处声明了未经检查的操作方法 @SuppressWarnings("unchecked") public List toList(Collection c) { List list = Arrays.asList(c.toArray()); Collections.sort(list); return list; } @SuppressWarnings({ "deprecation","unchecked"}) public static void main(String[] args) { SuppressWarningsAnnotation overrider = new SuppressWarningsAnnotation(); ArrayListlist = new ArrayList (); list.add("A"); list.add("B"); list.add("C"); //此处使用了弃用的操作方法 Date = new Date("20190118"); //此处使用了未经检查的操作方法 List sortedList = overrider.toList(list); }}
如果以上把@SuppressWarnings标记注释掉,在编译时就会报unchecked警告和deprecation警告:
加上@SuppressWarnings注解,再编译,警告被抑制:
下节继续
下节将给大家讲解的使用