重建序列化对象

时间:2013-01-03 21:22:32

标签: java deserialization

我正在尝试重建序列化对象并从中访问数据。

这是我发送对象的方式。

    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;
    }
}

1 个答案:

答案 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());

如果这不起作用,您的序列化代码可能有错误。