zoukankan      html  css  js  c++  java
  • @SuppressWarnings注解详解

    本文将从回答三个问题来了解@SuppressWarnings注解

    1. 是什么?@SuppressWarnings注释是什么?

    使用@SuppressWarnings注释来取消Java编译器发出的警告。

    2. 为什么?为什么使用@SuppressWarnings注解?

    编译器警告消息通常很有帮助。但是,有时警告会变得嘈杂。特别是当我们无法或不想解决它们时,编译器将发出有关此方法的警告。如果我们不想解决该警告,则可以使用@SuppressWarnings注释将其取消。

    3. 怎么用?如何使用@SuppressWarnings注解?

    @SuppressWarnings注解可选的参数有以下:

    1. rawtypes 使用原始数据类型
    2. unchecked 未经检查
    3. serial 未添加序列化字段
    4. deprecated 被废弃

    用法实例:

    1. 添加单个参数
    @SuppressWarnings("unchecked")
    
    1. 添加参数列表
    @SuppressWarnings({ "unchecked", "rawtypes" })
    

    可选参数详解:

    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();
        }
    }
    

    unchecked

    没有进行类型检查

    使用原始数据类型的一个缺陷就是不会进行类型检查,Java编译器会抛出没有进行类型检查的错误,此时我们可以使用@SuppressWarnings(“unchecked”)来取消警告

    serial

    对于一个实现了Serializable接口的类,如果没有声明SerializableSID则该类也会在编译时发出警告
    可使用@SuppressWarnings(“serial”)取消该警告

    @SuppressWarnings("serial")
    public class Test implements Serializable{
        private String version;
        public String getVersion(){ return version };
    }
    

    deprecated

    如果使用了被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

  • 相关阅读:
    虚拟内存思想
    虚拟内存映射 段分割 vm_area_struct
    进程、内存的理想与现实 VS 虚拟内存
    进程地址空间
    MMU CPU及思想
    链接器和加载器 好书
    编译器 链接器 加载器
    链接器简介
    C编译器、链接器、加载器详解
    静态库是.o文件的集合与弱符号
  • 原文地址:https://www.cnblogs.com/zhangnianlei/p/12239239.html
Copyright © 2011-2022 走看看