[英]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);
abc和def是遠程對象!
有什么辦法,怎么稱呼“ packageMethod”? 非常感謝Mike S.(cz)
你不能 您必須將其強制轉換為遠程接口。 這不是原始課程。 它是代理。 如果有要調用的方法,則必須在遠程接口中定義該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.