【发布时间】:2013-01-06 14:04:23
【问题描述】:
我已经写了这段代码:
package sample;
import org.freedesktop.dbus.DBusInterface;
import org.freedesktop.dbus.DBusInterfaceName;
import org.freedesktop.dbus.DBusConnection;
@DBusInterfaceName("org.mpris.clementine")
interface Player extends DBusInterface, java.rmi.Remote {
void Pause();
}
class Main {
public static void main (String[] args) throws org.freedesktop.dbus.exceptions.DBusException, java.lang.InterruptedException {
DBusConnection dc = DBusConnection.getConnection(DBusConnection.SESSION);
Player player = (Player) dc.getRemoteObject("org.mpris.clementine", "/Player");
player.Pause();
dc.disconnect();
}
}
并得到一行错误
Player player = (Player) dc.getRemoteObject("org.mpris.clementine", "/Player");
上面写着
Exception in thread "main" java.lang.ClassCastException: $Proxy2 cannot be cast to sample.Player
我知道问题在于对继承的误解或类似的事情。我已经彻底搜索过,但找不到答案。如何正确写出这一行?还有什么错误?
【问题讨论】:
-
问题是你认为你会得到一些扩展/实现 Player 的东西,但你不是。您将获得某种不扩展/实现 Player 的自动生成代理。也许它是一个 List
?我不知道。我建议在那里设置一个断点并运行一些 instanceof 检查以查看您拥有的内容。你能把这个连接的另一端贴出来吗?你在“/Player”下“绑定”了什么?
标签: java inheritance