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

类型安全性:来自对象的未经检查的强制类型转换

孟韬
2023-03-14
问题内容

我尝试将一个对象强制转换为我的Action类,但是会导致警告:

Type safety: Unchecked cast from Object to Action<ClientInterface>

Action<ClientInterface> action = null;
try {
 Object o = c.newInstance();
 if (o instanceof Action<?>) {
  action = (Action<ClientInterface>) o;
 } else {
  // TODO 2 Auto-generated catch block
  throw new InstantiationException();
 }
 [...]

感谢您的任何帮助


问题答案:

是的-
这是类型擦除的自然结果。如果o确实是if
实例Action<String>,则强制转换不会捕获该实例-您只会在尝试使用它时才看到问题,传入a ClientInterface而不是字符串。

您可以使用以下方法消除警告:

@SuppressWarnings("unchecked")

作为功​​能注释,但您不能轻松地解决潜在的问题:(



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

  • 我有一个通用类。它看起来像这样: 显然,conevertdatajsonstring方法仅在字符串类型为T时调用。但有一个警告: 类型安全:未选中从字符串转换为T 有没有一种方法可以在不使用SuppressWarnings的情况下解决此问题: @抑制警告(“未选中”) 方法之前?

  • 我的代码:-文件1。JAVA File2.java(catlisting_xpath元素的XPATH) 错误:- JAVAlang.ClassCastException:类组织。openqa。硒。遥远的RemoteWebElement不能转换为java类。util。列表(org.openqa.selenium.remote.RemoteWebElement位于加载器“app”的未命名模块中;jav

  • 下面是程序的一部分,它将ArrayList从服务器发送到客户端。我想删除关于此代码最后一行的警告: 客户端代码: MyVariable是一个具有一些属性的Java类。服务器正在创建一个ArrayList并用MyVariable变量作为项目填充它。然后它将完整的列表发送给客户端。 我想知道为什么我在那里有一个警告,以及如何完美地编码以获得0个警告。如果可能,我希望避免使用“@SuppressWarn

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

  • //一些代码... 方法的定义: 执行存储过程并返回输出参数的映射,按名称键入,如参数声明中所示 上面一行的警告: 来抑制它。 问题:但我如何正确地施放它呢? > 我尝试的一种方法是 不过,我还是必须在castObject()方法中放入SuppressWarnings(“unchecked”)。我不知道这样做是否正确。 我尝试的第二种方法是, 欢迎提出任何建议/建议。