我想通過物理網絡(不通過本地主機)在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