无法转换为已实现的接口

2023-12-02

我很困惑...

我有一个直接实现接口的类:

public class Device implements AutocompleteResult
{...}

这是我正在查看正确变量的证据:

Object match = ...;
log.debug(match.getClass()); // Outputs 'Device'
log.debug(match.getClass().getInterfaces()[0]); // Outputs 'AutocompleteResult'

然而,当我尝试将类的实例强制转换为接口时:

AutocompleteResult result = (AutocompleteResult) match;

我收到 ClassCastException!

ClassCastException: Device cannot be cast to AutocompleteResult

Also, isAssignableFrom返回 false,我不知道为什么:

log.debug(AutocompleteResult.class.isAssignableFrom(Device.class));

来自doc:

确定是否类或该类对象表示的接口是要么相同,要么是超类,或者由指定 Class 参数表示的类或接口的超接口。

难道我不应该总是能够将对象强制转换为其类实现的接口吗?

Thanks.


如果两个不同的类加载器加载名为的类,就会发生这种情况AutocompleteResult.

这两个类被视为完全不同类,即使它们具有相同的包和名称(甚至实现/字段/方法)。

造成这种情况的一个常见原因是,如果您使用某种插件系统以及您的基类和插件类provide同一个班级。

要检查此问题,请打印返回的值Class.getClassLoader()在两个有问题的类上(即由Device and的结果AutocompleteResult.class).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法转换为已实现的接口 的相关文章

随机推荐

  • MySQL 拒绝参数

    好吧 我对这个简直要疯了 MySQL 对这段 SQL 很不满 INSERT INTO test table column1 column2 VALUES COURSEID COURSENAME 您的 SQL 语法有错误 检查与您的 MySQ
  • 如何通过react-navigation在react-native上使用react hooks

    这是使用 React navigation 的 App js 其上有两个屏幕 称为 HomeScreen 和 AddScreen import as React from react import NavigationContainer f
  • 如何获取任务管理器中显示的正在运行的进程的进程ID

    我正在学习 powershell 并尝试了解如何使用变量和函数 我想打印出所有正在运行的记事本实例的 PID 基本上是任务管理器中 详细信息 选项卡下的 PID 列中显示的内容 我写了以下代码 cmd param abc Write Hos
  • 如何在 Discord.js 丰富嵌入中使用本地图像?

    我有这个代码 var datos dato1 dato2 dato3 console log message author username introdujo el comando message content en message g
  • 自动提交表单 (cURL)

    我正在编写一个表单来将数据发布到贝宝 这工作正常 我创建带有隐藏字段的表单 然后有一个提交按钮将所有内容提交到贝宝 但是 当用户单击该按钮时 我想做更多事情 例如更改数据库中的购物车状态 所以 我希望能够在他们单击提交时执行一些代码 然后将
  • 脚本显示错误的解释器并且不会运行

    我通过邮件收到了一个 perl 脚本并要求运行它 我将其按原样放置在本地驱动器上 但是当我尝试运行该脚本时 它向我显示 usr bin perl M bad interpreter No such file or directory 我检查
  • GetFileTitle 的本地化版本?

    我拼命地试图猜测如何在给定该文件的路径的情况下检索照片的本地化文件名 例如 给定路径 c images jellyfish png Windows 7 资源管理器和内置图像查看器程序都显示法语 win 7 的 M duses 一词 这对于其
  • 在页面加载之间保留变量

    我试图捕获表单的提交按钮按下情况 如果表单已提交 页面将刷新并显示一些隐藏字段 我想捕获表单之前是否已提交 如果在重新加载时提交 我想取消隐藏隐藏字段 我试图使用全局变量来实现此目的 但是我无法使其正常工作 这是我尝试过的 var clic
  • 即使元素存在,Selenium 也无法找到它们

    我正在创建一个简单的 selenium 脚本来输入用户名和密码进行登录 这是我的代码 driver webdriver Chrome executable path r C Users Aspire5 Downloads chromedri
  • 在 JSF 中显示 XML

    我有一个返回格式化 XML 字符串的方法 我想以一种包装精美 可读的方式在 JSF 页面上显示这一点 我首先使用了这个解决方案 pre pre
  • 在 Python 中创建一个空列表

    在 Python 中创建新的空列表的最佳方法是什么 l or l list 我问这个有两个原因 技术原因 至于哪个更快 创建一个类会导致开销 代码可读性 哪一项是标准约定 以下是测试哪一段代码更快的方法 python mtimeit l 1
  • R:将数字列表从字符转换为数字

    我的数据框中有一列 其中每个单元格中都有一个或多个数字 如果数字很多 则用空格分隔 此外 R 将它们视为字符向量 我真的很想将它们转换为数字 如果可能的话立即将它们求和 例如 我的一个细胞可能看起来像 6 310 21 20 64 我试过了
  • 在 Java 中检查字符串是否代表整数的最佳方法是什么?

    我通常使用以下习惯用法来检查字符串是否可以转换为整数 public boolean isInteger String input try Integer parseInt input return true catch Exception
  • 如何检测浏览器何时阻止 iFrame

    在 https 网站上 我尝试将随机提交的 URL 加载到 iframe 中 从而允许用户看到嵌入在我自己的用户界面中的网站 只要远程 url 是 https 就像我自己的网站 并且远程服务器没有明确阻止自身嵌入 iframe 网站就会在
  • 通过 API 从 Instagram 照片中提取纬度/经度

    默认情况下 Instagram 会保存所有提交的照片的地理标签 然后您可以使用按位置搜索 media search 但是 当我尝试使用以下命令从特定图片中提取地理标签时 media media id 我总是得到 location null在
  • word - 突出显示搜索结果而不永久更改文档格式

    我想突出显示搜索结果 类似于单词的本机搜索正在执行的操作 换句话说 我不希望搜索操作在文档中产生副作用 例如通过更改返回的文本范围中的字体颜色 var searchResults paragraph search searchValue c
  • 根据第一个数组对多个数组进行排序

    目前我正在开发一个项目 需要对总共 6 个数组进行排序 我已经设法使用快速排序对数组进行单独排序 但是 我只是想知道是否有一种方法可以对 1 个数组进行排序并将其反映在其他数组中元素的顺序上 例如 如果我将日期数组按升序排序 我希望其他数组
  • 在 jQuery 对话框中隐藏标题栏并显示关闭按钮

    我已隐藏标题栏jQuery Dialog如下 ui dialog titlebar hide 这也隐藏了关闭按钮Dialog 但我需要显示关闭按钮Dialog 我怎样才能做到这一点 添加以下 CSS 将隐藏标题文本和样式 保留关闭按钮 se
  • 在 Web 应用程序 Application_Start 方法中初始化 NServiceBus 时出现 NullReferenceException

    我正在运行 NServiceBus 2 0 RTM 当我的 MessageModule 将 CurrentSessionContext 绑定到我的 NHibernate sessionfactory 时 我收到 NullReferenceE
  • 无法转换为已实现的接口

    我很困惑 我有一个直接实现接口的类 public class Device implements AutocompleteResult 这是我正在查看正确变量的证据 Object match log debug match getClass