zoukankan      html  css  js  c++  java
  • 第24条:消除非受检警告

    用泛型编程时,会遇到许多编译器警告:非受检强制转化警告(unchecked cast warning)、非受检方法调用警告、非受检普通数组创建警告、非受检转换警告。

    许多非受检警告很容易消除,如:

    Set<String> s = new HashSet();

    编译器提醒你  HashSet is a raw type. References to generic type HashSet<E> should be parameterized

    同时提供方法告诉你如何纠正。

    有些警告难以消除,如果消除了所有的警告,可以确保代码是类型安全的,如果无法消除,但可以证明引起警告的代码是类型安全的,可以用一个@SuppressWarnings("unchecked")注解来禁止这条警告。

    SuppressWarnings注解可以用在任何粒度的级别,应该始终在尽可能小的范围中使用该注解,否则可能会掩盖重要的警告。

    public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
            @SuppressWarnings("unchecked")
            T[] copy = ((Object)newType == (Object)Object[].class)
                ? (T[]) new Object[newLength]
                : (T[]) Array.newInstance(newType.getComponentType(), newLength);
            System.arraycopy(original, 0, copy, 0,
                             Math.min(original.length, newLength));
            return copy;
    }

    在java.util.Arrays类中的一个方法,因为可以保证类型安全,所以用@SuppressWarnings("unchecked")注解禁止了警告,同时注解的作用范围是下面的一条语句。

  • 相关阅读:
    Centos7下rc.local文件开机不执行…
    Centos7添加密码安全策略
    Java8 时间日期类操作
    XML配置spring session jdbc实现session共享
    Spring Boot 2.x以后static下面的静态资源被拦截
    外观模式
    组合设计模式
    Java线程池源码解析
    观察者模式
    Java使用POI解析Excel表格
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5718521.html
Copyright © 2011-2022 走看看