首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java接口继承

Java接口继承
EN

Stack Overflow用户
提问于 2013-01-06 22:04:24
回答 3查看 1.4K关注 0票数 0

我写了下面的代码:

代码语言:javascript
复制
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();
        }
}

得到一个错误的队列

代码语言:javascript
复制
Player player = (Player) dc.getRemoteObject("org.mpris.clementine", "/Player");

上面写着

代码语言:javascript
复制
Exception in thread "main" java.lang.ClassCastException: $Proxy2 cannot be cast to sample.Player

我知道问题出在继承、误解或类似的问题上。我彻底地找过了,但还是找不到答案。如何正确地写这一行?错在哪里呢?

EN

回答 3

Stack Overflow用户

发布于 2013-01-06 22:07:17

您应该确保由

代码语言:javascript
复制
 dc.getRemoteObject  

实现接口播放器

票数 0
EN

Stack Overflow用户

发布于 2013-01-06 22:31:56

改用下面的代码:

代码语言:javascript
复制
Object obj = dc.getRemoteObject("org.mpris.clementine", "/Player");
if( obj instanceof Player ) {
    Player player = (Player) obj;
    player.pause();
}
票数 0
EN

Stack Overflow用户

发布于 2013-01-06 23:41:05

不确定'dc.getRemoteObject()‘是什么,如果它是一个远程操作,你需要解组对象。

Object obj= dc.getRemoteObject("org.mpris.clementine","/Player");

Player =(Player )PortableRemoteObject.narrow(obj,Player.class)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14182868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档