-4

NotSerializableExceptionあり、jvm は、にシリアル化されているものとはまったく関係のないクラスから来ていると言っていますObjectOutputStream

いったい何が起こっているのでしょうか?問題として言及されているクラスはシリアライズ可能ではなく、最も確実にシリアライズ可能である他のクラスからのいくつかのデータを操作しNotSerializableExceptionます。

編集:これは深刻な質問なので、投票しないでください!わかりましたので、次のことが問題になる可能性があるかどうか疑問に思っています:匿名の配列リストがマップに挿入されている場合(これは間違いなくシリアル化可能です)、シリアル化できないクラスで、これが問題になる可能性があります????

次のように: map.put(new ArrayList(){{add(ect....}});

4

1 に答える 1

4

フィールドもシリアル化可能である必要があります。落とし穴は、ネストされたクラスがそれらの外部クラスへの参照を持っているということです。

 class NotSerializable {
     class Inner implements Serializable {
         // contains a reference to this$0, the outer instance
     }

 }

つまり、あなたはあなたが気づいていないかもしれないフィールドを持っています。

簡単な解決策は、内部クラスを作成することですstatic

于 2012-04-29T16:44:00.387 に答える