我正在尝试扩展 java.io.BufferedWriter
使其成为 Serializable
。我尝试简单地扩展 BufferedWriter
并实现 Serializable
接口(interface)。它有两个构造函数,所以代码看起来像这样。
class SerializableBufferedWriter extends BufferedWriter implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1625952307886764541L;
public SerializableBufferedWriter(OutputStreamWriter osw, int size){
super(osw, size);
}
public SerializableBufferedWriter(OutputStreamWriter osw){
super(osw);
}
}
但是我在运行时得到一个无效的构造函数异常。在我这里阅读之后,对于一个实现
Serializable
的类,它的第一个不可序列化的父类(super class)需要有一个无参数的构造函数。那么如何在中间添加一个类,该类带有扩展 BufferedWriter
并由 SerializableBufferWriter
扩展的无参数构造函数?任何帮助是极大的赞赏
最佳答案
您可以做的是存储文件的名称或要向其发送数据的 URL。当您的应用程序重新加载此信息时,它会重新创建编写器。
您遇到的问题不仅是类,而且您想要保留的所有字段也是可序列化的。大多数流都不是可序列化的,因此您需要为这些流进行自定义序列化。
添加一个不带参数的构造函数。您需要使用构造函数的参数调用 super,这是困难的部分。
您遇到的最大问题是您正在尝试序列化并非旨在序列化的内容。
关于java - 如何在 Java 中实现 serializableBufferedWriter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11539178/