JavaSE基础:@SuppressWarnings注解的使用

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 编程老司机
 */
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的使用

 

 

 

 

 

 

 

posted @ 2019-01-18 11:41  编程老司机A  阅读(2000)  评论(0编辑  收藏  举报