2017-06-16 65 views
0

我有一個通過套接字發送類實例的客戶機/服務器體系結構。Java Socket:接收錯誤布爾值

在一類我有一個布爾:

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

其中I發送數據包中的一部分:

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該類(見上文),客戶始終將其視爲假。

這是從哪裏來的?

+0

你可以分享創建實例並通過套接字發送它的代碼嗎? – BackSlash

+0

@BackSlash完成。 –

+0

您可以創建一個演示問題的[mcve]嗎?我們可以運行一個完整但最小化的程序。 –

回答

0

我可以通過發送深層副本而不是對象本身來解決問題。解決方法,但工作。