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修饰的成员变量
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
.properties文件读取及占位符${...}替换源码解析
本篇文章主要介绍了.properties文件读取及占位符${...}替换源码解析的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧2017-05-05基于SpringBoot和MongoDB实现实时分析和日志处理功能
实时分析和日志处理在现代应用程序开发中扮演着重要的角色,MongoDB是一个非常流行的NoSQL数据库,其高性能和灵活性使其成为实时分析和日志处理的理想选择,本文将介绍如何使用 Spring Boot 和 MongoDB 实现实时分析和日志处理的功能2023-06-06Java CompletableFuture实现原理分析详解
CompletableFuture是Java8并发新特性,本文我们主要来聊一聊CompletableFuture的回调功能以及异步工作原理是如何实现的,需要的可以了解一下2022-09-09Java集合框架之List ArrayList LinkedList使用详解刨析
早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同2021-10-10
最新评论