我想通过物理网络(不通过本地主机)在java中发送对象,但似乎我有什么问题。通过使用Java的网络发送对象
接口对象(客户端和服务器有此):
public interface distributable extends Serializable {
public void test();
}
我想发送的对象(仅限于服务器有此):
class ObjectToSend implements distributable {
public ObjectToSend() {
}
public void test() {
system.out.println("worked!");
}
}
服务器:
private ObjectToSend obj = new ObjectToSend();
obj_out_stream.writeObject(obj);
obj_out_stream.flush();
客户:
private distributable ReceivedObj = null;
try {
ReceivedObj = (distributable) obj_in_steam,readObject();
} catch (ClassNotFoundException e) {
System.err.println("Error<w_console>: Couldn't recieve application code!");
}
ReceivedObj.test();
当ObjectToSend
类实现了Serializable并且我没有使用接口时,一切正常,因为我的所有类都在一个目录中,所以客户端“知道”了对象。现在我希望它能够在物理网络上工作,因此客户端只具有与对象的接口。看起来客户端无法接收对象,因为每次抛出异常。
注意:Java类和接口的名称应该以大写字母开头。此外,您的代码中充满了错误,这意味着您还没有真正使用它:修复它,再次尝试并在错误中添加更多详细信息。 – Viruzzo
如果你不知道铅笔是什么,如果你知道铅笔是一种书写工具,那并不重要。发送只知道接口的对象不起作用,因为您仍然需要知道对象是什么。接口不是类定义的替代品。 – Toomai