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