本文将从回答三个问题来了解@SuppressWarnings注解
使用@SuppressWarnings注释来取消Java编译器发出的警告。
编译器警告消息通常很有帮助。但是,有时警告会变得嘈杂。特别是当我们无法或不想解决它们时,编译器将发出有关此方法的警告。如果我们不想解决该警告,则可以使用@SuppressWarnings注释将其取消。
@SuppressWarnings注解可选的参数有以下:
rawtypes 使用原始数据类型unchecked 未经检查serial 未添加序列化字段deprecated 被废弃用法实例:
添加单个参数 @SuppressWarnings("unchecked") 添加参数列表 @SuppressWarnings({ "unchecked", "rawtypes" })正在使用原始类型
List、Set、Map是Java中的原始数据类型,Java 5出现泛型,现已不推荐使用原始类型,更推荐使用泛型例如:List<?>、Set<?>、Map<?>,原因以下:
使用原始数据类型从集合中读取到的每一个对象都必须进行转换,如果有人不小心插入了类型错误的对象,在运行时转换就会出错。使用泛型可以告诉编译器每个集合中接受哪些对象类型,编译器自动为插入进行转换,并在编译时告知是否插入错误类型的对象使用泛型的优点:使程序更安全,更清楚。虽然是不推荐但是任然还是可以使用原始类型,如果有十足的把握不出错,那我们可以在使用原始类型的时候添加@SuppressWarnings(“rawtypes”)来让程序在编译时不发出警告。
public class RawType{ public static void main(String args[]){ @SuppressWarnings("rawtypes") List names = new ArrayList(); } }没有进行类型检查
使用原始数据类型的一个缺陷就是不会进行类型检查,Java编译器会抛出没有进行类型检查的错误,此时我们可以使用@SuppressWarnings(“unchecked”)来取消警告
对于一个实现了Serializable接口的类,如果没有声明SerializableSID则该类也会在编译时发出警告 可使用@SuppressWarnings(“serial”)取消该警告
@SuppressWarnings("serial") public class Test implements Serializable{ private String version; public String getVersion(){ return version }; }如果使用了被Java编辑为废弃的方法或类时,可以使用@SuppressWarnings(“deprecated”)来取消警告
本文的主要内容:
当我们觉得编译器的警告无用且多与时我们可以使用@SuppressWarnings注解来取消Java编译器的警告@SuppressWarnings注解的可选参数有rawtype 使用原生类型、unchecked 使用未经检查的转换、serial 未添加序列化字段、deprecated 使用废弃方法参考:
https://www.baeldung.com/java-suppresswarnings
https://docs.oracle.com/javase/7/docs/api/java/lang/class-use/SuppressWarnings.html