Java Socket:接收错误的布尔值

时间:2017-06-16 10:27:19

标签: java sockets

我有一个客户端/服务器架构,通过套接字发送类实例。

在一个班级中我有一个布尔值:

public class Survey implements Serializable {
    private static final long serialVersionUID = -1156493488498723461L;
    private boolean isExpired;

    public Survey() {
        this.isExpired = false;
    }

    public void markAsExpired() {
        this.isExpired = true;
    }

    public boolean isExpired() {
        return isExpired;
    }
}

我发送数据包的部分:

survey.markAsExpired();
HashMap<Header, Object> packet = new HashMap<Header, Object>();
packet.put(header, survey);

System.out.println(survey.isExpired()); // prints true
try {
    socketOutput.writeObject(packet);
    socketOutput.flush();
} catch (IOException e) {
    e.printStackTrace();
}

当我将该类的布尔值设置为true(见上文)时,客户端始终将其作为false接收。

这是从哪里来的?

1 个答案:

答案 0 :(得分:0)

我可以通过发送深层副本而不是对象本身来解决问题。解决方法但工作正常。