我有一些使用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)
答案 0 :(得分:1)
你做不到。您必须将其强制转换为远程接口。 不是原始类。这是一个代理人。如果有要调用的方法,则必须在远程接口中定义该方法。