<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 序列化概念和示例第二部分 > 原文: [https://javabeginnerstutorial.com/core-java-tutorial/java-serialization-concept-example-part-ii/](https://javabeginnerstutorial.com/core-java-tutorial/java-serialization-concept-example-part-ii/) [在第一部分](https://javabeginnerstutorial.com/core-java-tutorial/java-serialization-concept-example/ "Java serialization concept and Example")中,我們討論了什么是序列化以及如何在 Java 中實現。 在本文中,我們將討論一些涉及序列化的高級主題。 在本文中,我們將使用與上一篇文章相同的代碼庫。 ## 使用`serialVersionUID` 您必須已經看到在源代碼中使用了一個名為“`serialVersionUID`”的變量。 使用此變量有特定的原因。 `serialVersionUID`是通過序列化運行時與每個可序列化類關聯的版本號。 在反序列化過程中使用此版本號來驗證序列化對象的發送者和接收者是否已為該對象加載了與序列化兼容的類。 * 在可序列化類中定義`serialVersionUID`字段不是**強制性**。 * 如果可序列化的類具有顯式的`serialVersionUID`,則此字段的類型應為`long`,并且必須是靜態且最終的。 * 如果沒有明確定義的`serialVersionUID`字段,則序列化運行時將計算該類的默認值。 隨編譯器的實現而有所不同。 因此建議定義`serialVersionUID`。 * 建議對`serialVersionUID`使用私有訪問修飾符。 * 數組類無法聲明顯式的`serialVersionUID`,因此它們始終具有默認的計算值,但是對于數組類,無需匹配`serialVersionUID`值。 * 如果已加載的接收器類的`serialVersionUID`與相應的發送器類之間存在差異,則將引發 `InvalidClassException`。 ## 瞬態的使用 我們可以使用`Serializable`保存對象的狀態。 但是,如果我不想保存字段狀態怎么辦? 在這種情況下,可以像下面這樣使用瞬態修飾符。 序列化過程中不會保存瞬態字段狀態,反序列化時會將默認值分配給同一變量。 使用瞬態變量更改`Employee`類。 ```java package com.jbt; import java.io.Serializable; public class Employee implements Serializable { public String firstName; /* * Here transient modifier is used for lastName variable. * This variable's state will not be saved while serialzation. * While De-Serialization process default value will be provide. * null in this case. */ transient public String lastName; private static final long serialVersionUID = 5462223600l; } ``` 如果您執行相同的類(`SerializaitonClass`&`DeserializationClass`),則輸出將與之前的代碼不同。 ```java Deserializing Employee... First Name of Employee: Vivekanand Last Name of Employee: null ``` 如您所見,姓氏為`null`,因為在序列化過程中未保存該變量的狀態。 ## 類層次結構和可序列化 在這里,我將討論`Serializable`接口對類層次結構的影響。 如果一個類實現了`Serializable`接口,則可以保存該類的狀態。 但是,如果同一類擴展了另一個未實現`Serializable`接口的類,則不會保存超類的狀態。 為了了解區別,我們將更新原始的`Employee`類。 現在,該類將擴展另一個類`superEmployee`。 該超類將不會實現`Serializable`接口。 ```java package com.jbt; import java.io.Serializable; public class Employee extends superEmployee implements Serializable { public String firstName; private static final long serialVersionUID = 5462223600l; } class superEmployee { public String lastName; } ``` 如果您一個接一個地執行“`SerializaitonClass`”和“`DeserializationClass`”,那么輸出將如下所示 ```java Deserializing Employee... First Name of Employee: Vivekanand Last Name of Employee: null ``` ## 瞬態與靜態變量 我已經寫了一篇完整的文章。 [請在此處訪問](https://javabeginnerstutorial.com/core-java-tutorial/transient-vs-static-variable-java/ "Transient vs Static variable java")。
                  <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>

                              哎呀哎呀视频在线观看