一、對象類文件的序列換與反序列化 1.java.io.ObjectOutputStream;序列化JAVA對象到硬碟 2.java.io.ObjectInputStream;將硬碟中的數據“反序列化”到JVM記憶體中 Compile編譯(java->class) DeCompile反編譯(class- ...
一、對象類文件的序列換與反序列化
1.java.io.ObjectOutputStream;序列化JAVA對象到硬碟
2.java.io.ObjectInputStream;將硬碟中的數據“反序列化”到JVM記憶體中
Compile編譯(java->class)
DeCompile反編譯(class->java)
3.標識性介面的作用:
JVM如果檢查到該對象實現了某個標識介面,會對它進行特殊待遇
如下代碼中的User102實現的介面Serializable
疑問:User102實現Serializable介面,JVM會對它的特殊待遇是什麼?
package com.bjpowernode.java_learning; import java.io.*; import java.io.Serializable; public class D102_1_ObjectOutputStream { public static void main(String[] args) throws IOException,ClassNotFoundException{ //1.創建java對象 User102 u1 = new User102("彭於晏"); //2.創建輸出流(序列化流)(JVM中的對象狀態保存到硬碟中) String address = "C:\\\\Users\\\\lenovo1\\\\Workspaces\\\\MyEclipse CI\\\\Java_learning\\\\src\\\\com\\\\bjpowernode\\\\java_learning\\\\temp1.txt"; ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(address)); //3.寫入 oos.writeObject(u1);//寫進去的不是幾個文字,而是一個字元串對象 //4.刷新 oos.flush(); //5.關閉 oos.close(); //接下來我們需要把序列化的對象給讀出來,也就是反序列化 //6.創建反序列化流 ObjectInputStream ois = new ObjectInputStream(new FileInputStream(address)); //7.反序列化 Object o = ois.readObject(); System.out.println(o); //關閉 ois.close(); } } class User102 implements Serializable{//該介面是一個可序列化的,該介面沒有任何方法,該介面是一個 //標誌性的介面,像這樣的介面還有java.util.Cloneable String name; User102(String name){ this.name=name; } public String toString() { return "User[name="+name+"]"; } }
二、源碼:
D102_1_ObjectOutputStream.java
https://github.com/ruigege66/Java/blob/master/D102_1_ObjectOutputStream.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料