Java實體對象為什么一定要實現Serializable接口呢?

文章目錄

  • Java對象為什么要實現Serializable接口?
  • Serializable接口概述

Java對象為什么要實現Serializable接口?

最近這段時間一直在忙著編寫Java業務代碼,麻木地搬著Ctrl-C、Ctrl-V的磚,在不知道重復了多少次定義Java實體對象時“implements Serializable”的C/V大法后,腦海中突然冒出一個思維(A):問了自己一句“Java實體對象為什么一定要實現Serializable接口呢?”,關于這個問題,腦海中的另一個思維(B)立馬給出了回復“居然問這么幼稚和基礎的問題,實現Serilizable接口是為了序列化啊!”,思維(A):“哦,好吧!然而,然后呢?”

此時思維(B)陷入了沉默,突然感覺自己有點淺薄了,好像寫了這么多年Java還真是沒有太關注過Serializable這個接口!為什么一定要實現Serializable接口?它的底層原理是什么?為什么一定要序列化,序列化又是什么?關于這些問題,不知道各位讀者朋友有沒有過類似的問題,如果有那么我們就在這篇文章中一起尋找答案吧!當然,如果你對這些問題都很清楚,也歡迎表達看法!

Serializable接口概述

Serializable是java.io包中定義的、用于實現Java類的序列化操作而提供的一個語義級別的接口。Serializable序列化接口沒有任何方法或者字段,只是用于標識可序列化的語義。實現了Serializable接口的類可以被ObjectOutputStream轉換為字節流,同時也可以通過ObjectInputStream再將其解析為對象。例如,我們可以將序列化對象寫入文件后,再次從文件中讀取它并反序列化成對象,也就是說,可以使用表示對象及其數據的類型信息和字節在內存中重新創建對象。

而這一點對于面向對象的編程語言來說是非常重要的,因為無論什么編程語言,其底層涉及IO操作的部分還是由操作系統其幫其完成的,而底層IO操作都是以字節流的方式進行的,所以寫操作都涉及將編程語言數據類型轉換為字節流,而讀操作則又涉及將字節流轉化為編程語言類型的特定數據類型。而Java作為一門面向對象的編程語言,對象作為其主要數據的類型載體,為了完成對象數據的讀寫操作,也就需要一種方式來讓JVM知道在進行IO操作時如何將對象數據轉換為字節流,以及如何將字節流數據轉換為特定的對象,而Serializable接口就承擔了這樣一個角色。

原文鏈接:戳這里
感謝作者分享!

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

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

相關文章

C3P0連接池工具類使用

c3p0的基本連接配置文件 c3p0-config.xml <c3p0-config><default-config><property name"driverClass">com.mysql.jdbc.Driver</property><property name"jdbcUrl">jdbc:mysql:///mybase</property><property name…

項目經理常見的溝通壞習慣

溝通失敗有很多原因&#xff0c;每個項目經理都必須熟悉這些原因、了解其中的行為、并且有責任避免溝通失敗的發生。在一些團隊中&#xff0c;會產生失敗的溝通、失敗的項目是因為團隊經理本身的壞習慣行為或者他本人容忍組員有些行為&#xff0c;而這些行為和壞習慣無意中會導…

Android屏幕適配

Android屏幕適配一直是Android開發們的一個痛點&#xff0c;各種各樣的屏幕分辨率等&#xff0c;對Android的屏幕適配帶來了很大的麻煩&#xff0c;而谷歌的解決方案也并不被所有人滿意&#xff0c;所以筆者結合Android官方文檔&#xff0c;來談談這個話題。 術語和基本概念 本…

萬維網www

WWW是環球信息網的縮寫&#xff0c;&#xff08;亦作“Web”、“WWW”、“W3”&#xff0c;英文全稱為“World Wide Web”&#xff09;&#xff0c;中文名字為“萬維網”&#xff0c;"環球網"等&#xff0c;常簡稱為Web。 分為Web客戶端和Web服務器程序。 WWW可以讓W…

飛控計算機的作用,用于波音777飛機的主要飛控計算機

用于波音777飛機的主要飛控計算機飛行控制計算機容錯技術本文介紹了在ERA1992年航空電子會議上介紹的波音777的主要飛控計算機。介紹了系(本文共1頁)閱讀全文>>在對無人機飛控計算機技術發展應用敘述的基礎上,設計了一款基于Zynq平臺的應用于小型無人機的飛控計算機硬件平…

Springboot,SSM框架的區別

參考文獻&#xff1a;文章一 參考文獻&#xff1a;文章二 總結&#xff1a; 1.Springboot 將原有的 xml 配置&#xff0c;簡化為 java 注解 2.使用 IDE 可以很方便的搭建一個 springboot 項目&#xff0c;選擇對應的 maven 依賴&#xff0c;簡化Spring應用的初始搭建以及開發過…

Mysql導入excel數據,解決某些特殊字符亂碼問題

問題 做項目需要從excel表格導入到mysql的數據庫表中&#xff0c;excel表格中的“規格”字段的“”符號導入數據庫表中&#xff0c;會出現部分數據的“”這個符號會亂碼&#xff0c;成“&#xff1f;”的形式。 解決方法 打開excel表格&#xff0c;另存為csv文件&#xff1b;用…

Redis進階實踐之十六 Redis大批量增加數據

原文:Redis進階實踐之十六 Redis大批量增加數據一、介紹 有時候&#xff0c;Redis實例需要在很短的時間內加載大量先前存在或用戶生成的數據&#xff0c;以便盡可能快地創建數百萬個鍵。這就是所謂的批量插入&#xff0c;本文檔的目標是提供有關如何以盡可能快的速度向…

項目經理溝通的四個好習慣

一名項目經理溝通的時間占到工作時間的80%&#xff0c;所以如何提高溝通效率就變成了項目經理提高工作效率的重點。 一名優秀的項目經理&#xff0c;無疑是一個好的溝通者。因為&#xff0c;專業的技能可以使你成為某個領域的專家&#xff0c;但出色的溝通技能&#xff0c…

u盤安裝成功計算機里找不到文件夾,u盤里的文件不見了,詳細教您U盤內容不顯示怎么辦...

在工作、學習中&#xff0c;我們需要把資料攜帶外出的時候&#xff0c;首選的存儲工具基本上都是U盤。不過有用戶在使用U盤時卻遇到了U盤的所有的文件夾不見了的情況&#xff0c;但內存的明明文件還在&#xff0c;這到底是為什么呢&#xff1f;難道U盤的文件真的不見了嗎&#…

五分鐘實現SpringBoot快速入門

文章目錄一、創建Maven工程二、添加SpringBoot的起步依賴三、編寫SpringBoot引導類四、編寫Controller五、測試六、SpringBoot工程熱部署一、創建Maven工程 二、添加SpringBoot的起步依賴 文件位置&#xff1a;pom.xml SpringBoot要求&#xff0c;項目要繼承SpringBoot的起步…

分布式系統開發工具包 —— 基于Kryo的Java對象序列化

Kryo是用于Java語言的一個快速和高效的對象圖序列化框架。Kryo項目的目的是快速、高效、方便地使用API。當需要持久化對象的時候&#xff0c;不論是持久化到文件、數據庫還是網絡&#xff0c;都可以使用Kryo。 目前Kryo已經到了4.0.1版本以上了。本文的介紹適用于V2.0以上版本。…

代碼編輯器Sublime Text 可以跨平臺(linux,window,os x)

說到代碼編輯器&#xff0c;大部分人首先會想到UltraEdit&#xff0c;EmEditor和notepad。但今天要介紹的是另一款功能非常強大的代碼編輯器——Sublime Text。Sublime Text還是一款跨 OS X、Linux 和 Windows 三大平臺的文字/代碼編輯器。除了Sublime Text出色的功能&#xff…

計算機畫圖怎樣更改文字,如何在圖片上改字|超簡單的修改圖片里文字方法

這篇文章將要給大家介紹的是&#xff0c;不用聯網&#xff0c;不用下載專業的圖像處理軟件&#xff0c;單純用畫圖工具&#xff0c;就能修改表情包、圖片上文字的方法&#xff0c;只適合簡單的圖片處理&#xff0c;復雜的還是交給專業的圖像處理工具吧。下面系統吧就給大家帶來…

軟件維護

所謂軟件維護就是在軟件已經交付使用之后&#xff0c;為了改正錯誤或滿足新的需要而修改軟件的過程。可以通過描述軟件交付使用后可能進行的4項活動&#xff0c;具體地定義軟件維護。 1.改正性維護 因為軟件測試不可能暴露出一個大型軟件系統中所有潛藏的錯誤&#xff0c;所以…

【intellij idea】Project Structure 講解

參考文章&#xff1a;戳這里 謝謝樓主分享

將以太坊封裝為 ERC20

將以太坊封裝為 ERC20 TOKEN 很多 DAPP 都是在處理 ERC20接口的 token, 其實很容易將以太坊封裝為 ERC20,這樣就可以統一處理, 至少我目前在做的雷電網絡就是這么處理的. 主要內容復制在網絡https://programtheblockchain.com/posts/2018/05/26/wrapping-ether-in-an-erc20-tok…

javascript高級程序設計學習之數值轉換 |Number(),parseInt(),parseFloat()

2019獨角獸企業重金招聘Python工程師標準>>> 將非數值轉換成數值的函數有三個&#xff1a;Number(),parseInt(),parseFloat(); 小記tip&#xff1a;Number()可以用于任何數據類型&#xff1b;parseInt(),parseFloat()針對的是將字符串&#xff1b; Number()的轉換規…

軟件的可維護性

可以把軟件的可維護性定性地定義為&#xff1a;維護人員理解、改正、改動或改進這個軟件的難易程度。 提高可維護性是支配軟件工程方法學所有步驟的關鍵目標。