2

ユーザーが入力したデータをプログラムに保存しようとしています。現在、私は以下を取得しています:

java.io.NotSerializableException: java.awt.image.BufferedImage error

ここで、ユーザー インターフェイス クラスに FileWriter を実装しました。テキスト ファイルを調べると、UI に実装したテキスト ボックスとラベルに関するすべての情報を保存しようとしているように見えます。UI の基になっているメイン クラスには、プロジェクトのオブジェクトを保持する ArrayList があります。これらのオブジェクトをシリアル化する必要がありますが、BufferedImage が含まれています。BufferedImage エラーを回避する方法を見つけたと思いますが、UI 全体をシリアル化したくありません。

私の質問は、オブジェクトの ArrayList を含むクラスにシリアル化メソッドを移動して、UI がシリアル化されないようにする必要があるかどうかです。

4

2 に答える 2

3

Mark BufferedImage fields with transient keyword which indicates that a field should not be serialized.

class A {
    transient BufferedImage bufferedImage;
    ...

then you can customize serialization by implementing the following methods in class A

private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{
    s.defaultWriteObject();
    // extract bytes from bufferedImage and write them
    ...

private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException {
    s.defaultReadObject();
    // read bytes and re-create bufferedImage
    ...
于 2013-05-15T03:17:29.743 に答える