我正在尝试扩展 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/

10-11 16:28