java.io.NotSerializableException异常的问题及解决
作者:神秘嘉宾吴彦祖
java.io.NotSerializableException异常
先说解决方法再说原因
解决方法
报错信息会指示出问题的是哪个实体类,在该实体类的后面加上一句 “implements Serializable”
例如:
import java.io.Serializable; public class User implements Serializable{ }
如果加了“implements Serializable”之后还是报错,你会发现报错信息里面指向的是你要序列化的类里面引用的其他实体类,所以实体类里面所有的实体类都需要加上 “implements Serializable” 。
原因
出现这个问题的时候应该是想要将 该实体类对象保存到某个地方,那么此时必须需要序列化;一个类只有实现了Serializable接口,它的对象才是可序列化的;
而访问这个类的源代码你会发现他什么也没有实现,其实就相当于一个标志位,它的作用只是能指明哪个类可以被实例化
(java对象不可序列化异常)java.io.NotSerializableException
java.io.NotSerializableException
要想一个对象时可序列化的,需要满足相应的要求:
(1)该对象必须实现Serializable接口
(2)需要提供一个全局常量serialVersionUID,其值任意
(3)保证其内部的所有属性也必须是可序列化的(默认情况下基本数据类型和String类型是可序列化的)
例如,想使Person进行序列化操作:
*对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原来的Java对象
*序列化:用ObjectOutputStream类保存基本类型数据或对象的机制
*反序列化:用ObjectInputStream类读取基本类型数据或对象的机制
*ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。