我有一張城市地圖,包含我需要(去)序列化的街道。每個街道由城市和ID識別,就像這樣:對同一對象使用兩種不同的序列化方法
private final City city;
private final long id;
城市包含所有的街道名單在這個城市(City.streetList
),以便保存模型時我可以做這樣的事情
serializeToFile(modelFile, currentCity);
這工作並沒有問題,但現在我想通過網絡發送街道(也使用序列化)。當我序列化街道時,很顯然城市對象也會被序列化,以至於所有街道都會被序列化,從而導致非常大的數據包大小。
我不能讓city
暫時,因爲它是唯一需要識別街道。我也不能使City.streetList
爲瞬態,因爲我需要我的模型列表。
每個城市都有一個唯一的ID,所以這樣的事情應該是可能的
private void writeObject(ObjectOutputStream out) throws IOException {
if (serializeForNetwork) { // How can I know this here?
out.writeObject(city.getId());
} else {
out.writeObject(city);
}
out.write(id);
}
如前所述,我不知道該對象應該怎麼知道它被寫入到網絡(調用street.setWritingToNetwork(true)
序列化似乎更前比醜陋),也許這不是一個好辦法嗎?
任何想法非常感謝! :-)