4

私は拡張しようとしてjava.io.BufferedWriterいるので、それを作りますSerializable。インターフェースを拡張BufferedWriterして実装してみました。Serializable2つのコンストラクターがあるため、コードは次のようになります。

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には、最初のシリアル化できないスーパークラスに引数のないコンストラクターが必要であることがわかりました。BufferedWriterでは、引数なしのコンストラクターを使用してクラスを間に追加するにはどうすればよいSerializableBufferWriterですか?

どんな助けでも大歓迎です

4

1 に答える 1

3

あなたができることは、データを送信するファイルの名前またはURLを保存することです。アプリケーションがこの情報をリロードすると、ライターが再作成されます。


あなたが抱えている問題は、クラスだけでなく、保持したいすべてのフィールドもシリアル化可能であるということです。ほとんどのストリームはシリアル化できないため、これらのカスタムシリアル化が必要です。

では、引数なしのコンストラクターを拡張して、間にクラスを追加するにはどうすればよいですか?

引数を取らないコンストラクターを追加します。難しい部分であるコンストラクターの引数を使用してsuperを呼び出す必要があります。

あなたが抱えている最大の問題は、シリアル化するように設計されていないものをシリアル化しようとしていることです。

于 2012-07-18T10:33:48.253 に答える