1
我正在編寫基於網絡的回合式java遊戲,並且每次玩家進行移動時都使用java序列化api來序列化遊戲狀態。在java中序列化可變對象
令我煩惱的是,我發現api假定這些對象是不可變的。這意味着每次我嘗試發送更新的遊戲狀態時,都會在客戶端收到舊的遊戲狀態。
有沒有辦法讓objectoutput/objectinputstream忘記一個對象已經被髮送並且每次創建一個新的對象?
我正在編寫基於網絡的回合式java遊戲,並且每次玩家進行移動時都使用java序列化api來序列化遊戲狀態。在java中序列化可變對象
令我煩惱的是,我發現api假定這些對象是不可變的。這意味着每次我嘗試發送更新的遊戲狀態時,都會在客戶端收到舊的遊戲狀態。
有沒有辦法讓objectoutput/objectinputstream忘記一個對象已經被髮送並且每次創建一個新的對象?
ObjectOutputStream.reset()是你在找的東西:Oracle docs。它強制流發送更新的對象。
這聽起來不對 - 你可以發佈一些示例代碼來展示如何序列化對象嗎? – 2012-04-24 14:07:28
我知道我沒有回答你的問題,但我會避免序列化API,而是實現一些更高級的,人類可讀的API。一旦開始調試,它會節省您的時間...... – claesv 2012-04-24 14:09:24