序列化、反序列化

????????java 提供了一種對象序列化的機制,該機制中,一個對象可以被表示為一個字節序列,該字節序列包括該對象的數據、有關對象的類型的信息和存儲在對象中數據的類型。

? ? ? ? 將序列化對象寫入文件之后,可以從文件中讀取出來,并且對它進行反序列化,也就是說,對象的類型信息、對象的數據,還有對象中的數據類型可以用來在內存中新建對象。

整個過程都是Java虛擬機(JVM)獨立的,也就是說,在一個平臺上序列化的對象可以在另一個完全不同的平臺上反序列化該對象。

????????類ObjectInputStream

writeObject(Object x)

? ? ? ? ?類ObjectOutputStream

readObject()

是高層次的數據流,它們包含序列化和反序列化對象的方法。

一、序列化對象?

1.1創建實體類

????????序列化要實體類去實現 implements?Serializable,否則會報java.io.NotSerializableException異常

????????出現這個問題的時候應該是想要將 該實體類對象保存到某個地方,那么此時必須需要序列化;一個類只有實現了Serializable接口,它的對象才是可序列化的;

????????而訪問這個類的源代碼你會發現他什么也沒有實現,其實就相當于一個標志位,它的作用只是能指明哪個類可以被實例化

package com.amarsoft.lease;import java.io.Serializable;public class Student implements Serializable {private String name ;private int age ;private String sex;Student(String name,int age,String sex){this.name = name;this.age = age;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}
//序列化String path  = "D:\\workspace\\HtProject\\ea\\casic-mis-ea\\amix-lease\\src\\test\\java\\com\\amarsoft\\lease\\Student1.ser";Student student = new Student("會飛的蝸牛", 300, "雄性");try{FileOutputStream fileOutputStream = new FileOutputStream(path);ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);objectOutputStream.writeObject(student);objectOutputStream.close();fileOutputStream.close();}catch (Exception e){System.out.println(e.getMessage());}

二、反序列化對象

package com.amarsoft.lease;import java.io.FileInputStream;
import java.io.ObjectInputStream;public class Cainfyly {public static void main(String[] args) {//反序列化String path  = "D:\\workspace\\HtProject\\ea\\casic-mis-ea\\amix-lease\\src\\test\\java\\com\\amarsoft\\lease\\Student1.ser";try{FileInputStream fileInputStream = new FileInputStream(path);ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);Student stu = (Student)objectInputStream.readObject();stu.setAge(200);System.out.println(stu.getAge());//200objectInputStream.close();fileInputStream.close();}catch (Exception e){System.out.println(e.getMessage());}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41718.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41718.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41718.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java并發編程-ThreadLocal深入解讀及案例實戰

文章目錄 概述原理使用場景示例最佳實踐內存泄漏風險阿里開源組件TransmittableThreadLocal原理和機制使用場景如何使用注意事項ThreadLocal在分布式存儲系統edits_log案例中的實踐1. 為什么使用`ThreadLocal`?2. 實踐案例2.1 緩存日志操作2.2 線程局部的編輯日志狀態3. 注意事…

在 Spring 中編寫單元測試

單元測試是軟件開發過程中不可或缺的一部分,它能有效地提高代碼質量,確保代碼功能的正確性。在 Spring 應用中,JUnit 和 Mockito 是常用的單元測試工具,而 Spring Test 提供了豐富的測試支持。本文將介紹如何在 Spring 中使用 JUn…

并行處理百萬個文件的解析和追加

處理和解析大量文件,尤其是百萬級別的文件,是一個復雜且資源密集的任務。為實現高效并行處理,可以使用Python中的多種并行和并發編程工具,比如multiprocessing、concurrent.futures模塊以及分布式計算框架如Dask和Apache Spark。這…

物聯網時代5G通信技術分析研究一、引言

一、引言 近幾年,移動網絡技術跟隨互聯網的不斷發展而改革和進步,給平民大眾的生活也帶來新的嘗試與影響。從2G網絡的出現,到逐步被社會民眾所了解的3G,再到被熟知的且正在服務于大家的4G網絡,移動網絡技術的發展速度令…

jQuery Mobile 安裝指南

jQuery Mobile 安裝指南 jQuery Mobile 是一個基于 jQuery 的移動設備友好的網頁開發框架,它允許開發者創建響應式網頁和應用程序。本指南將詳細介紹如何安裝 jQuery Mobile,并確保您的開發環境準備好進行移動網頁開發。 1. 環境準備 在開始安裝 jQuery Mobile 之前,請確…

Mysql系列-Binlog主從同步

原文鏈接:https://zhuanlan.zhihu.com/p/669450627 一、主從同步概述 mysql主從同步,即MySQL Replication,可以實現將數據從一臺數據庫服務器同步到多臺數據庫服務器。MySQL數據庫自帶主 從同步功能,經過配置,可以實現基于庫、表…

B端設計:任何不顧及用戶體驗的設計,都是在裝樣子,花架子

B端設計是指面向企業客戶的設計,通常涉及產品、服務或系統的界面和功能設計。與C端設計不同,B端設計更注重實用性和專業性,因為它直接影響企業的效率和利益。 在B端設計中,用戶體驗同樣至關重要。不顧及用戶體驗的設計只是空洞的表…

數據庫之索引(二)

目錄 一、如何判斷數據庫的索引是否生效 二、如何評估索引創建的是否合理 三、索引是否越多越好 四、如何處理數據庫索引失效 五、是否所有的字段都適合創建索引 一、如何判斷數據庫的索引是否生效 可以使用EXPLAIN語句查看索引是否正在使用。 例如,假設已經創…

70.Bug:使用list.sort(Comparator.Comping(User::getCreateTime).reverse())空指針異常

1.出錯原因&#xff1a;在xml中沒有做字段映射 報錯語句復現&#xff1a; List<User> listnew ArrayList<>()&#xff1b; xml中進行查詢數據&#xff0c;數據存放在list中........... //排序 list.sort(Comparator.Comping(User::getCreateTime).reverse())&…

經典的layui框架,還有人用嗎?令人惋惜。

自從layui官網宣布關閉之后&#xff0c;layui框架的用戶飛速下滑&#xff0c;以至于到現在貝格前端工場承接的項目中&#xff0c;鮮有要求使用layui框架的&#xff0c;那么個框架還有人用嗎&#xff1f; 一、layui沒落是不是jquery惹的禍 layui的沒落與jQuery無關。layui框架…

Hi3861 OpenHarmony嵌入式應用入門--UDP Server

本篇使用的是lwip編寫udp服務端。需要提前準備好一個PARAM_HOTSPOT_SSID宏定義的熱點&#xff0c;并且密碼為PARAM_HOTSPOT_PSK。 修改網絡參數 在Hi3861開發板上運行上述四個測試程序之前&#xff0c;需要根據你的無線路由、Linux系統IP修改 net_params.h文件的相關代碼&…

深入理解 Docker 容器技術

一、引言 在當今的云計算和軟件開發領域&#xff0c;Docker 容器技術已經成為了一項不可或缺的工具。它極大地改變了應用程序的部署和運行方式&#xff0c;為開發者和運維人員帶來了諸多便利。 二、Docker 容器是什么&#xff1f; Docker 容器是一種輕量級、可移植、自包含的…

起底:Three.js和Cesium.js,二者異同點,好比全科和專科.

Three.js和Cesium.js是兩個常用的webGL引擎&#xff0c;很多小伙伴容易把它們搞混淆了&#xff0c;今天威斯數據來詳細介紹一下&#xff0c;他們的起源、不同點和共同點&#xff0c;閱讀后你就發現二者就像全科醫院和專科醫院的關系&#xff0c;很好識別。 一、二者的起源 Th…

性能測試相關理解---性能測試流程(二)

六、性能測試流程&#xff08;如何做性能測試&#xff1f;) 根據學習全棧測試博主的課程做的筆記 1、前期準備– 項目初期就開始&#xff0c;業務需求評審時盡量參與,對業務更深刻的認識&#xff08;確定哪些是核心業務、哪些可能存在并發請求、確定什么地方會出現瓶頸,方便后…

WebOffice在線編微軟Offfice,并以二進制流的形式打開Word文檔

在日常辦公場景中&#xff0c;我們經常會遇到這種場景&#xff1a;我們的合同管理系統的各種Word,excel,ppt數據都是以二進制數組的形式存儲在數據庫中&#xff0c;如何從數據庫中讀取二進制數據&#xff0c;以二進制數據作為參數&#xff0c;然后加載到瀏覽器的Office窗口&…

【無標題】地平線2西之絕境/Horizon Forbidden West? Complete Edition(更新:V1.3.57)

游戲介紹 與埃洛伊同行&#xff0c;在危險壯美的邊疆之地揭開種種未知的神秘威脅。此完整版可完整享受廣受好評的《地平線 西之絕境?》內容和額外內容&#xff0c;包括在主線游戲后展開的后續故事“炙炎海岸”。 重返《地平線》中遙遠未來的后末日世界&#xff0c;探索遠方的土…

Twitter群發消息API接口的功能?如何配置?

Twitter群發消息API接口怎么申請&#xff1f;如何使用API接口&#xff1f; 為了方便企業和開發者有效地與用戶互動&#xff0c;Twitter提供了各種API接口&#xff0c;其中Twitter群發消息API接口尤為重要。AokSend將詳細介紹Twitter群發消息API接口的功能及其應用場景。 Twit…

html+css+js貪吃蛇游戲

貪吃蛇游戲&#x1f579;四個按鈕控制方向&#x1f3ae; 源代碼在圖片后面 點贊??關注&#x1f64f;收藏?? 互粉必回&#x1f64f;&#x1f64f;&#x1f60d;&#x1f60d;&#x1f60d; 源代碼&#x1f4df; <!DOCTYPE html> <html lang"en"&…

15jQuery引入

【一】什么是jQuery jQuery是一個輕量級的、兼容多瀏覽器的JavaScript庫。jQuery內部封裝了原生的js代碼&#xff0c;提高編寫效率 【二】jQuery引入配置 1.● 代碼復制下來放到自己建的txt中&#xff0c;然后把他移入pycharm項目中重構成js文件(注意&#xff1a;只能在當前…

win10使用小技巧三

1. 添加照片查看器支持 目的&#xff1a;為Windows 10添加對特定圖片格式&#xff08;如JPG&#xff09;的支持&#xff0c;使用Windows照片查看器。步驟&#xff1a; 使用WinR打開運行窗口。輸入regedit&#xff0c;點擊確定進入注冊表編輯器。導航至HKEY_CURRENT_MACHINE\SO…