博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第24条:消除非受检警告
阅读量:6967 次
发布时间:2019-06-27

本文共 1004 字,大约阅读时间需要 3 分钟。

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

 

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

Set
s = new HashSet();

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

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

 

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

 

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

 

public static 
T[] copyOf(U[] original, int newLength, Class
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")注解禁止了警告,同时注解的作用范围是下面的一条语句。

转载于:https://www.cnblogs.com/13jhzeng/p/5718521.html

你可能感兴趣的文章
[31期] 第一个项目结束之际-->俺很高调但很真诚地感谢一个人-->涛爷
查看>>
回头再看第一次项目
查看>>
sql 50题
查看>>
Unity3D编辑器之重写Hierarchy的右键菜单
查看>>
有无关键字new的区别
查看>>
svn idea使用
查看>>
Hashmap,Set,Map,List,ArrayList的区别
查看>>
3.Linux 文件的压缩与打包
查看>>
JAVA分布式架构
查看>>
如何把使用到android res文件夹下面资源(R.xx.xx)的工程打包成jar文件,供其它项目使用...
查看>>
删除Referencing outlet
查看>>
三、hbase JavaAPI
查看>>
Maximum Subarray
查看>>
Android ProGuard使用要点
查看>>
导入自定义模块model
查看>>
Python之初识函数(Day11)
查看>>
[LeetCode] NO.383 Ransom Note
查看>>
App数据分析的五大维度!
查看>>
Authentication and Authorization in ASP.NET Web API
查看>>
nginx
查看>>