我正在尝试重建序列化对象并从中访问数据。
这是我发送对象的方式。
Socket socket = new Socket ("localhost", port);
ObjectOutputStream out = new ObjectOutputStream (socket.getOutputStream());
Tester t = new Tester("test");
out.writeObject(t);
out.flush();
这就是我收到它的方式
//这就是服务器的构建方式
private ServerSocket server;
server = new ServerSocket(port);
newsocket = server.accept();
//这就是我实际获得对象的方式
ObjectInputStream input = new ObjectInputStream(newSocket.getInputStream());
Tester obj = (Tester) input.readObject();
System.out.println(obj.getText());
但是我只得到以下输出
[Ljava.lang.StackTraceElement;@237360be
我希望获得的是我在对象“Test”中发送的字符串。我做错了什么吗?
My Tester类看起来像这样
public class Tester implements Serializable {
private String theMessage = "";
public Tester(String message) {
theMessage = message;
}
public String getText() {
return theMessage;
}
}
答案 0 :(得分:2)
试试这个
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream();
Tester tester0 = new Tester("test")
oos.writeObject(tester0);
oos.close();
System.out.println(tester0.getText());
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
Tester tester = (Tester) ois.readObject();
System.out.println(tester.getText());
如果这不起作用,您的序列化代码可能有错误。