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(); ArrayList<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); //此處使用了棄用的操作方法 Date = new Date("20190118"); //此處使用了未經檢查的操作方法 List sortedList = overrider.toList(list); } }
如果以上把@SuppressWarnings標記注釋掉,在編譯時就會報unchecked警告和deprecation警告:
加上@SuppressWarnings注解,再編譯,警告被抑制:
下節繼續
下節將給大家講解預定義注解@SafeVarargs的使用