<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 序列化 > 原文: [https://beginnersbook.com/2014/07/java-serialization/](https://beginnersbook.com/2014/07/java-serialization/) 在這里,我們將討論如何序列化和反序列化對象以及它的用途。 ## 什么是 Java 序列化? 序列化是一種將對象轉換為字節流的機制,以便可以將其寫入文件,通過網絡傳輸或存儲到數據庫中。反序列化反之亦然。簡單來說,序列化是將對象轉換為字節流,反序列化是從字節流重建對象。 Java 序列化 API 執行序列化和反序列化。類必須實現`java.io.Serializable`接口才有資格進行序列化。 讓我們舉個例子來更好地理解這些概念: **示例** 此類實現`Serializable`接口,這意味著它可以被序列化。除了那些聲明為`transient`的字段外,該類的所有字段都可以在轉換為字節流后寫入文件。在下面的示例中,我們有兩個瞬態字段,這些字段不參與序列化。 `Student.java` ```java public class Student implements java.io.Serializable{ private int stuRollNum; private int stuAge; private String stuName; private transient String stuAddress; private transient int stuHeight; public Student(int roll, int age, String name, String address, int height) { this.stuRollNum = roll; this.stuAge = age; this.stuName = name; this.stuAddress = address; this.stuHeight = height; } public int getStuRollNum() { return stuRollNum; } public void setStuRollNum(int stuRollNum) { this.stuRollNum = stuRollNum; } public int getStuAge() { return stuAge; } public void setStuAge(int stuAge) { this.stuAge = stuAge; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public String getStuAddress() { return stuAddress; } public void setStuAddress(String stuAddress) { this.stuAddress = stuAddress; } public int getStuHeight() { return stuHeight; } public void setStuHeight(int stuHeight) { this.stuHeight = stuHeight; } } ``` ## 對象的序列化 該類正在將`Student`類的對象寫入`Student.ser`文件。我們使用`FileOutputStream`和`ObjectOutputStream`將對象寫入`File`。 注意:根據 Java 序列化的最佳實踐,文件名應具有`.ser`擴展名。 ```java import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.IOException; public class SendClass { public static void main(String args[]) { Student obj = new Student(101, 25, "Chaitanya", "Agra", 6); try{ FileOutputStream fos = new FileOutputStream("Student.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(obj); oos.close(); fos.close(); System.out.println("Serialzation Done!!"); }catch(IOException ioe){ System.out.println(ioe); } } } ``` 輸出: ```java Serialzation Done!! ``` ## 對象的反序列化 從讀取文件中的字節流后,該類將重建`Student`類的對象。觀察此課程的輸出,學生地址和學生身高字段為`null`和 0。這是因為這些字段在`Student`類中被聲明為`transient`。 ```java import java.io.FileInputStream; import java.io.ObjectInputStream; import java.io.IOException; public class AcceptClass { public static void main(String args[]) { Student o=null; try{ FileInputStream fis = new FileInputStream("Student.ser"); ObjectInputStream ois = new ObjectInputStream(fis); o = (Student)ois.readObject(); ois.close(); fis.close(); } catch(IOException ioe) { ioe.printStackTrace(); return; }catch(ClassNotFoundException cnfe) { System.out.println("Student Class is not found."); cnfe.printStackTrace(); return; } System.out.println("Student Name:"+o.getStuName()); System.out.println("Student Age:"+o.getStuAge()); System.out.println("Student Roll No:"+o.getStuRollNum()); System.out.println("Student Address:"+o.getStuAddress()); System.out.println("Student Height:"+o.getStuHeight()); } } ``` **輸出:** ```java Student Name:Chaitanya Student Age:25 Student Roll No:101 Student Address:null Student Height:0 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看