我有一张城市地图,包含我需要(去)序列化的街道。每个街道由城市和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)
序列化似乎更前比丑陋),也许这不是一个好办法吗?
任何想法非常感谢! :-)