zoukankan      html  css  js  c++  java
  • Effective Java 24 Eliminate unchecked warnings

    Note

    1. Eliminate every unchecked warning that you can.

         

      Set<Lark> exaltation = new HashSet();

      The compiler will gently remind you what you did wrong:

      Venery.java:4: warning: [unchecked] unchecked conversion

      found : HashSet, required: Set<Lark>

      Set<Lark> exaltation = new HashSet();

      ^

      You can then make the indicated correction, causing the warning to disappear:

      Set<Lark> exaltation = new HashSet<Lark>();

         

    2. If you can't eliminate a warning, and you can prove that the code that provoked the warning is type safe, then (and only then) suppress the warning with an @SuppressWarnings("unchecked") annotation.
    3. Always use the Suppress Warnings annotation on the smallest scope possible.

         

      // Adding local variable to reduce scope of @SuppressWarnings

      public <T> T[] toArray(T[] a) {

      if (a.length < size) {

      // This cast is correct because the array we're creating

      // is of the same type as the one passed in, which is T[].

      @SuppressWarnings("unchecked") T[] result =

      (T[]) Arrays.copyOf(elements, size, a.getClass());

      return result;

      }

      System.arraycopy(elements, 0, a, 0, size);

      if (a.length > size)

      a[size] = null;

      return a;

      }

    4. Every time you use an @SuppressWarnings("unchecked") annotation, add a comment saying why it's safe to do so.

         

    Summary

    Unchecked warnings are important. Don't ignore them. Every unchecked warning represents the potential for a ClassCastException at run-time. Do your best to eliminate these warnings. If you can't eliminate an unchecked warning and you can prove that the code that provoked it is typesafe, suppress the warning with an @SuppressWarnings("unchecked") annotation in the narrowest possible scope. Record the rationale for your decision to suppress the warning in a comment.

    作者:小郝
    出处:http://www.cnblogs.com/haokaibo/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    关于tinymce编辑器插件重新初始化问题
    16进制=>rebg(包含透明度的转换处理)
    在vue项目中所有地方拿到当前项目的vue实例
    vue-draggable两种情况下的demo
    Docker管理工具之portainer
    SpringBoot集成Elasticsearch
    ElasticSearch添加索引
    Docker安装ElasticSearch
    RabbitMQ学习总结(2)-API的使用
    Docker安装RabbitMQ
  • 原文地址:https://www.cnblogs.com/haokaibo/p/eliminate-unchecked-warnings.html
Copyright © 2011-2022 走看看