java可序列化NotSerializableException
我有一个java可序列化NotSerializableException,java,serializable,Java,Serializable,我有一个NotSerializableException,jvm告诉我它来自一个类,它与序列化到ObjectOutputStream的内容完全无关 到底发生了什么事?它提到的问题类是不可序列化的,并且操纵来自其他类的一些数据,这些数据肯定是可序列化的,这到底为什么会导致notserializableeexception 编辑: 请不要否决这是一个严肃的问题! 好的,我只是想知道以下是否可能是一个问题:如果我有一个匿名的arraylist,被插入到一个映射中,(最确定的是可序列化的),在一个不可序
NotSerializableException
,jvm告诉我它来自一个类,它与序列化到ObjectOutputStream的内容完全无关
到底发生了什么事?它提到的问题类是不可序列化的,并且操纵来自其他类的一些数据,这些数据肯定是可序列化的,这到底为什么会导致notserializableeexception
编辑:
请不要否决这是一个严肃的问题!
好的,我只是想知道以下是否可能是一个问题:如果我有一个匿名的arraylist,被插入到一个映射中,(最确定的是可序列化的),在一个不可序列化的类中,这会是问题吗
类似这样:map.put(new ArrayList(){{add(ect…}}});字段也必须是可序列化的。一个问题是嵌套类有一个对其外部类的引用
class NotSerializable {
class Inner implements Serializable {
// contains a reference to this$0, the outer instance
}
}
i、 你有一个你可能不知道的领域
简单的解决方案是使内部类静态
什么是完整堆栈跟踪?您试图序列化什么对象(发布代码)?要序列化的类中的字段也必须是可序列化的。@山姆:如果没有关于代码的更多详细信息,除了你有bug之外,没有人可以说任何话。你可以从命令行复制/粘贴。请不要发布屏幕截图,每次有人这样做,上帝都会杀了一只小猫。你可以在适当的IDE中运行程序?NetBeans r将程序放在文本框中,您可以在其中复制/粘贴。我认为集合也是一个陷阱(因为集合本身只有在其存储的类型可序列化时才可序列化)奇怪的是,没有任何IDE自动检查类型是否可序列化。我想这就是问题所在,我有一个匿名arraylist,它是一种内部类的类型,位于一个不可序列化的类中,只是没有意识到如果在静态
方法中创建匿名类(或将其移动到静态方法中)它不会有隐含的引用。