日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

string转成对象_详解Java I/O流(五),对象序列化

發布時間:2023/12/18 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 string转成对象_详解Java I/O流(五),对象序列化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對象序列化

什么是序列化和反序列化呢?

序列化就是將對象轉成字節序列的過程,反序列化就是將字節序列重組成對象的過程。

在這里插入圖片描述

為什么要有對象序列化機制

程序中的對象,其實是存在有內存中,當我們JVM關閉時,無論如何它都不會繼續存在了。那有沒有一種機制能讓對象具有“持久性”呢?序列化機制提供了一種方法,你可以將對象序列化的字節流輸入到文件保存在磁盤上。

序列化機制的另外一種意義便是我們可以通過網絡傳輸對象了,Java中的 遠程方法調用(RMI),底層就需要序列化機制的保證。

在Java中怎么實現序列化和反序列化

首先要序列化的對象必須實現一個Serializable接口(這是一個標識接口,不包括任何方法)

1public?interface?Serializable?{2}

其次需要是用兩個對象流類:ObjectInputStream ObjectOutputStream。主要使用ObjectInputStream對象的readObject方法讀入對象、ObjectOutputStreamwriteObject方法寫入對象到流中

下面我們通過序列化機制將一個簡單的pojo對象寫入到文件,并再次讀入到程序內存。

1public?class?User?implements?Serializable?{ 2????private?String?name; 3????private?int?age; 4 5????public?User(String?name,?int?age)?{ 6????????this.name?=?name; 7????????this.age?=?age; 8????} 910????@Override11????public?String?toString()?{12????????return?"User{"?+13????????????????"name='"?+?name?+?'''?+14????????????????",?age='"?+?age?+?'''?+15????????????????'}';16????}1718????public?static?void?main(String[]?args)?throws?IOException,?ClassNotFoundException?{19????????User?user?=?new?User("二營長",18);20????????ObjectOutputStream?objectOps?=?new?ObjectOutputStream(new?FileOutputStream("f:/user.out"));21????????objectOps.writeObject(user);22????????objectOps.close();2324????????//?再從文件中取出對象25????????ObjectInputStream?objectIns?=?new?ObjectInputStream(new?FileInputStream("f:/user.out"));2627????????//?這里要做一次強轉28????????User?user1?=?(User)?objectIns.readObject();29????????System.out.println(user1);30????????objectIns.close();31????}32}33

程序運行結果:

1User{name='二營長',?age='18'}

不想序列化的數據使用transient(瞬時)關鍵字屏蔽

如果我們上面的user對象有一個password字段,屬于敏感信息,這種是不能走序列化的方式的,但是實現了Serializable 接口的對象會自動序列化所有的數據域,怎么辦呢?在password字段上加上關鍵字transient就好了。

1?private?transient?String?password;

序列化機制就簡單介紹到這里吧。這是Java原生的序列化,現在市面上有好多序列化協議可以選擇,比如Json、FastJson、Thrift、Hessian 、protobuf等。

總結

以上是生活随笔為你收集整理的string转成对象_详解Java I/O流(五),对象序列化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。