0

さて、保存したいクラスRegionのオブジェクトがあります。Regionを作成し、Regionクラス内のすべてのクラスにSerializableを実装しました。私の保存方法は完全に正常に機能しますが、次の方法で保存したファイルを開こうとすると、次のようになります。

// ----------------------------------------------------------
/**
 * Open a Region object with the given fileName.
 *
 * @param fileName
 * @return The desired Region object.
 */
public static Region openRegion(String fileName)
{
    try
    {
        FileInputStream fis = new FileInputStream(fileName + ".txt");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Object readObject = ois.readObject();
        ois.close();

        if (readObject != null && readObject instanceof Region)
        {
            return (Region)readObject;
        }
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    catch (ClassNotFoundException e)
    {
        e.printStackTrace();
    }
    return null;
}

しかし、次のエラーが発生します。java.io.InvalidClassException:htm.model.Cell; java.io.ObjectStreamClass $ ExceptionInfo.newInvalidClassException(Unknown Source)at java.io.ObjectStreamClass.checkDeserialize(Unknown Source)に有効なコンストラクターがありません

CellオブジェクトはRegionオブジェクト内のクラスですが、次のように機能するコンストラクターが確実にあります。public Cell(Column column、int columnIndex){super(column、columnIndex); this.predictionSteps = 0; this.predictingState = false; this.previousPredictingState = false; this.learningState = false; this.previousLearningState = false; this.listOfDistalSegments = new ArrayList(5); }

長い質問で申し訳ありませんが、何が間違っているのかわかりません。ありがとう!

4

1 に答える 1

0

Cellの最も近いシリアライズ不可能な基本クラスには、パブリックの引数なしコンストラクターが必要です。

于 2013-01-13T11:15:19.883 に答える