0
我有一个有很多信息的类Bucket
,其中我只想将(可串行化的)两个字段存储到一个文件中。因此,我做了Bucket
扩展ChatData
它只保留这两个字段,因为我认为当上传时,我可能会丢失无用的信息,然后将bucket
对象存储为chatdata
对象。向父类丢失信息 - 存储对象的一部分
但是,上传到超类不会使对象失去其子类信息。我怎样才能做到这一点?
public class ChatData implements Serializable {
private int f1 = 1;
private int f2 = 2;
}
public class Bucket extends ChatData implements Serializable {
private int f3 = 3;
private int f4 = 4; // useless data when it comes to storing
private int f5 = 5;
public void store(ObjectOutputStream oos) {
oos.writeObject((ChatData) this); // does also store f3, f4, f5,
// ... but I don't whant these!
// also, unnecessary cast, does not do anything
}
public static void main(String[] args) {
Bucket b = new Bucket();
b.store(new ObjectOutputStream(new FileOutputStream("C:/output.dat"));
}
}
(未经测试的代码,只为可视化)
我怎么能写我Bucket
对象作为ChatData
对象到我的硬盘驱动器?如果不是,只有部分存储对象的首选方法是什么?
我能想到一个简单的解决方案,比如创建一个全新的对象,但我宁愿理解什么是最好的方法。
这在某种程度上也几乎没有任何节省硬盘空间可言,虽然一半的数据应该是失踪......不知道为什么..但它的工作原理无论如何,感谢 – Blauhirn 2015-04-02 19:11:50
不要忘记如果你觉得它对你有帮助 – CKing 2015-04-03 07:17:56