簡體   English   中英

Java RMI-從接口/ $ Proxy轉換為原始類?

[英]Java RMI - Casting from interface/$Proxy to original class?

我有一些使用Java RMI的服務器和客戶端。 為了簡化,服務器上存在返回Task(iTask)和接收iTask的方法。 例如,服務器:

interface iTask extends Remote{
    void publicMethod();
}

class Task extends UnicastRemoteObject implements iTask
{
    public void publicMethod(){...} //interface
    void packageMethod(){...} //not interface
}

和某些(與什么無關)類中的方法:

iTask getTask(){
    return new Task();
}

void doSomethingSecret(iTask task){
    Task needthis = (Task)task; //BOOM! ClassCastException: $Proxy9 cannot be cast to nextQuest.server.Task
    needthis.packageMethod(); // I need this...
}

在客戶中,我只是

iTask tsk = abc.getTask()
def.doSomethingSecret(tsk);

abcdef是遠程對象!

有什么辦法,怎么稱呼“ packageMethod”? 非常感謝Mike S.(cz)

你不能 您必須將其強制轉換為遠程接口。 不是原始課程。 它是代理。 如果有要調用的方法,則必須在遠程接口中定義該方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM