我写这段代码:Java接口继承
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
我知道问题出在继承误解或者这样的行为。我已经彻底搜寻,但我找不到答案。如何正确书写这一行?那错误是什么?
的问题是,你认为你会得到一些扩展/实现的球员,但你不是。你得到某种自动生成的代理,不扩展/实现播放器。也许它的名单?我不知道。我建议在那里设置一个断点,并运行一些instanceof检查来查看你有什么。你可以发布这个连接的另一面吗? “/ Player”下的“绑定”是什么? –
radai