在我的RMI代码中,我在此行获得了一个例外:
RMIImplementation factory
= (RMIImplementation) Naming.lookup(url);
例外是:
java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to sjdproject.remoteRMI.RMIImplementation
这告诉我Naming.lookup(url)无法强制转换为RMIImplementation的对象。
现在,RMIImplementation扩展了一个接口RMIInterface,它本身扩展了Remote。如果我放入RMIInterface代替RMIIMplementation,我不会得到异常,但工厂最终会成为空值。
这是怎么回事?
答案 0 :(得分:0)
您必须强制转换为远程接口,而不是实现类。这就是远程接口存在的原因。
如果使用Naming.bind()绑定null,则只能从Naming.lookup()获取null。
我得出结论,你发现了一个例外并忽略了它并继续使用一个仍为空的变量。