java.io.NotSerializableException異常的問題及解決
java.io.NotSerializableException異常
先說解決方法再說原因
解決方法
報錯信息會指示出問題的是哪個實(shí)體類,在該實(shí)體類的后面加上一句 “implements Serializable”
例如:
import java.io.Serializable; public class User implements Serializable{ }
如果加了“implements Serializable”之后還是報錯,你會發(fā)現(xiàn)報錯信息里面指向的是你要序列化的類里面引用的其他實(shí)體類,所以實(shí)體類里面所有的實(shí)體類都需要加上 “implements Serializable” 。
原因
出現(xiàn)這個問題的時候應(yīng)該是想要將 該實(shí)體類對象保存到某個地方,那么此時必須需要序列化;一個類只有實(shí)現(xiàn)了Serializable接口,它的對象才是可序列化的;
而訪問這個類的源代碼你會發(fā)現(xiàn)他什么也沒有實(shí)現(xiàn),其實(shí)就相當(dāng)于一個標(biāo)志位,它的作用只是能指明哪個類可以被實(shí)例化
(java對象不可序列化異常)java.io.NotSerializableException
java.io.NotSerializableException
要想一個對象時可序列化的,需要滿足相應(yīng)的要求:
(1)該對象必須實(shí)現(xiàn)Serializable接口
(2)需要提供一個全局常量serialVersionUID,其值任意
(3)保證其內(nèi)部的所有屬性也必須是可序列化的(默認(rèn)情況下基本數(shù)據(jù)類型和String類型是可序列化的)
例如,想使Person進(jìn)行序列化操作:
*對象序列化機(jī)制允許把內(nèi)存中的Java對象轉(zhuǎn)換成平臺無關(guān)的二進(jìn)制流,從而允許把這種二進(jìn)制流持久地保存在磁盤上,或通過網(wǎng)絡(luò)將這種二進(jìn)制流傳輸?shù)搅硪粋€網(wǎng)絡(luò)節(jié)點(diǎn)。//當(dāng)其它程序獲取了這種二進(jìn)制流,就可以恢復(fù)成原來的Java對象
*序列化:用ObjectOutputStream類保存基本類型數(shù)據(jù)或?qū)ο蟮臋C(jī)制
*反序列化:用ObjectInputStream類讀取基本類型數(shù)據(jù)或?qū)ο蟮臋C(jī)制
*ObjectOutputStream和ObjectInputStream不能序列化static和transient修飾的成員變量
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java字節(jié)碼編程之非常好用的javassist
這篇文章主要介紹了詳解Java字節(jié)碼編程之非常好用的javassist,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Springboot教程之如何設(shè)置springboot熱重啟
這篇文章主要介紹了Springboot教程之如何設(shè)置springboot熱重啟,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07SpringBoot使用Redisson實(shí)現(xiàn)延遲執(zhí)行的完整示例
這篇文章主要介紹了SpringBoot使用Redisson實(shí)現(xiàn)延遲執(zhí)行的完整示例,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06使用@RequestBody 接收復(fù)雜實(shí)體類集合
這篇文章主要介紹了使用@RequestBody 接收復(fù)雜實(shí)體類集合方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10最優(yōu)雅地整合 Spring & Spring MVC & MyBatis 搭建 Java 企業(yè)級應(yīng)用(附源碼)
這篇文章主要介紹了最優(yōu)雅地整合 Spring & Spring MVC & MyBatis 搭建 Java 企業(yè)級應(yīng)用(附源碼),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01