当前位置: 首页 > 面试题库 >

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

冯通
2023-03-14
问题内容

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


问题答案:

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

Set<String> set = new HashSet();

会产生这样的警告。

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

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

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

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



 类似资料:
  • 问题内容: Eclipse给我以下形式的警告: 类型安全性:未经检查的从Object到HashMap的转换 这是从对我无法控制返回对象的API的调用中得出的: 如果可能的话,我想避免Eclipse警告,因为从理论上讲,它们至少表明潜在的代码问题。不过,我还没有找到消除这种情况的好方法。我可以将涉及到的一行单独提取到一个方法中,然后添加到该方法中,从而限制了我忽略警告的代码块的影响。还有更好的选择吗

  • 问题内容: 在我的spring应用程序上下文文件中,我有类似以下内容: 在java类中,实现如下所示: 在Eclipse中,我看到一条警告: 类型安全性:未经检查的从Object到HashMap的转换 我做错什么了?我该如何解决该问题? 问题答案: 好吧,首先,你正在通过新的HashMap创建调用浪费内存。你的第二行完全忽略了对此创建的哈希图的引用,从而使该哈希图可用于垃圾收集器。因此,不要这样做

  • 问题内容: 我有一个不是actor的java对象,它使用actorSelection(Path)从一个actor系统中选择actor。系统中可能不存在所选参与者。 在Java Api中,ActorSelection不存在ask(),因此我无法向actor选择发送和标识消息并使用响应的发送者。 我试图通过演员选择将消息发送给演员,然后对死信做出反应来解决该问题。但是我没有任何死信。 如何通过Acto

  • 我不明白为什么我收到以下代码的警告: 未选中对<code>isAssignableFrom(类)的调用 当我使用< code>isInstance方法时(根据我的理解,它提供相同的结果),我没有得到警告:

  • 使用,这很容易:

  • 本文向大家介绍什么是拼写检查?相关面试题,主要包含被问及什么是拼写检查?时的应答技巧和注意事项,需要的朋友参考一下 浏览器中输入区欧盟,输入错误,会被拼写检查为去欧盟,实际上原理是采用了贝叶斯原理,由贝叶斯公式可知P(c|w),w表示拼写错误的情况,而c表示实际想要拼写的单词,等于P(w|c)P(c)/P(w),也就是在若干备选中选择最大的P(c|w),而P(w)都是相同的,即找到使得P(w|c)