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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    feign.RetryableException: Read timed out
    字段重复性校验
    时间的问题总结
    Maven使用mvn命令生成一个spring mvc的web项目
    Mac OS安装brew
    Docker部署Web应用到Tomcat
    Docker安装使用Oracle 11g
    Python 修改AD密码
    Let's Encrypt 证书 wget 报错
    dedecms获取指定栏目下的文章数量
  • 原文地址:https://www.cnblogs.com/haokaibo/p/eliminate-unchecked-warnings.html
Copyright © 2011-2022 走看看