小编典典

什么是未经检查的演员表,我该如何检查?

java

我认为我得到了未经检查的演员表的含义(从一个类型转换到另一种类型),但是“检查”演员表意味着什么?如何检查演员表,以便可以避免在Eclipse中出现此警告?


阅读 218

收藏
2020-09-16

共1个答案

小编典典

未检查的强制转换意味着(隐式或显式)您正在从泛型类型转换为非限定类型,或者反之。例如这条线

Set<String> set = new HashSet();

会产生这样的警告。

通常有这样的警告是有充分的理由的,因此您应该尝试改进代码而不是禁止警告。引用来自有效Java,第二版:

消除所有可能的未经检查的警告。
如果消除所有警告,可以确保代码是类型安全的,这是一件非常好的事情。这意味着您不会ClassCastException在运行时获得“ a”
,并且可以提高您对程序按预期运行的信心。

如果您不能消除警告,并且可以证明引发警告的代码是类型安全的,则(并且仅在此之后)使用@SuppressWarnings("unchecked")批注抑制警告。如果您在没有先证明代码是类型安全的情况下取消警告,那只会给自己一种错误的安全感。该代码可以在不发出任何警告的情况下进行编译,但是仍然可以ClassCastException在运行时抛出。但是,如果您忽略了已知为安全的未经检查的警告(而不是禁止它们),那么当出现代表实际问题的新警告时,您将不会注意到。在您未静音的所有错误警报中,新警告将丢失。

当然,消除警告并不总是像上面的代码那样容易。但是,如果没有看到您的代码,就无法告诉您如何使其变得安全。

2020-09-16