024:消除非受检警告

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

有许多非受检警告很容易消除,例如:
Set set = new HashSet<>();
编译器会细致地提醒你哪里出错了:
warning:[unchecked] unchecked conversion
found : HashSet, require: Set

你就可以纠正所显示的错误,消除警告:
Set set = new HashSet();

JDK1.7以及以上是不会存在此警告的,因为jdk1.7后会自动类型判断。

要尽可能的消除每一个非受检警告
如果消除了所有警告,就可以确保代码是类型安全的。

如果无法消除警告,同时可以证明引起警告的代码是类型安全的。可以使用@SuppressWarnings("unchecked")注解来禁止这条警告。

应该始终在尽可能小的范围中使用SuppressWarnings注解
他通常是个变量声明,或是非常简短的方法或者构造器,永远不要在整个类上使用SuppressWarnings,这么做可能会掩盖了重要的警告。

尽量将SuppressWarnings注解移动到一个局部变量的声明中。
若在return中出现了警告,则建议定义一个局部变量,将return语句内容放到局部变量中,这样可以在局部变量上加@SuppressWarnings注解来消除警告。

建议:每当使用SuppressWarnings("unchecked")注解时,都要添加一条注释,说明为什么这么做是安全的。
这样可以帮助其他人理解代码,更重要的是,可以尽量减少其他人修改代码后导致计算不安全的概率。

总之,非受检警告很重要,不要忽略他们,每一条警告都表示可能在运行时抛出ClassCastException异常。要尽最大的努力消除这些警告,如果无法消除非受检警告,同时可以证明引起警告的代码是类型安全的,就可以在尽可能小的范围中,用@SuppressWarnings("unchecked")注解禁止该警告,并写好注释。

若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


024:消除非受检警告_第1张图片
qrcode_for_gh_577b64e73701_258.jpg

你可能感兴趣的:(024:消除非受检警告)