プロジェクト内でオブジェクトを直列化および逆シリアル化する際に問題が発生します。オブジェクトをname.datファイルに書き込んでいます。 しかし、私はNameクラスに変更を加えるたびに、それは2つの異なるオブジェクトであるため、それを非直列化することはできません。古いオブジェクトのJava非直列化
これを回避する手段はありますか?
プロジェクト内でオブジェクトを直列化および逆シリアル化する際に問題が発生します。オブジェクトをname.datファイルに書き込んでいます。 しかし、私はNameクラスに変更を加えるたびに、それは2つの異なるオブジェクトであるため、それを非直列化することはできません。古いオブジェクトのJava非直列化
これを回避する手段はありますか?
あなたの最良のオプションは以下のとおりです。
1)と2)がおそらく問題にならないとすれば、オプション3)は真剣に考慮する必要があります。永続化しているデータの性質に応じて、Javaの直列化に代わるさまざまな方法があります。これらを含める:Javaプロパティを使用して
最後に、Javaオブジェクトの直列化を使用して、クラスのバージョン管理を実現することができます。しかし、それは難しいです。そしてあなたがクラスを絶えず変えているなら、それは楽しいものにならないでしょう。最初にVersioning of Serializable Objectsを読んでください。
4. 'static final long serialVersionUID = 1L;'または古い値が何であったか。 – EJP
はい...あなたは互換性のない変更を行うまで、すべてが梨の形になります。そう、本当に、いいえ。 –
あなたのためにこれほどTahnk!静的final long serialVersionUID = 1Lを追加するほうが簡単ですが、 :) –
私はそれを理解しました! –
これは2つの異なる*クラス*です。エラーメッセージは、あなたが行う必要があることをあなたにほとんど伝えます。 – EJP
これは、Javaのビルトインシリアル化メカニズムがデータの長期保存にはあまり適していない理由です。データを格納するには、XMLやJSONなどの標準形式を使用します。 – Jesper