您好,登錄后才能下訂單哦!
Java中transient關鍵字的原理是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
什么是序列化
序列化是對象進行持久化處理,也就是說,將對象轉化成一個字節流進行存儲(比如存儲為一個字節文件)或傳輸(通過網絡傳輸字節)。同時,我們也可以從字節中反序列化一個對象出來。這是Java程序中一個重要的概念,因為網絡應用中通常需要將對象序列化成字節傳輸。每一個需要序列化的對象,都要實現 Serializable 接口。
transient關鍵字
默認情況下,對象所有的變量都會轉變成持久狀態。但是有時候,一些變量可能不需要序列化,因為沒必要對這些變量進行序列化。這時,你就可以將這些變量申明為 transient。如果一個變量被申明為 transient,那么這個變量就不會被序列化。
通過下面這個例子應該能夠解釋 transient 關鍵字的作用:
public class NameStore implements Serializable { private String firstName; private transient String middleName; private String lastName; public NameStore (String fName, String mName, String lName){ this.firstName = fName; this.middleName = mName; this.lastName = lName; } @Override public String toString() { return "NameStore{" + "firstName='" + firstName + '\'' + ", middleName='" + middleName + '\'' + ", lastName='" + lastName + '\'' + '}'; }}public class TransientExample { public static void main(String[] args) throws Exception { NameStore nameStore = new NameStore("Steve", "Middle","Jobs"); ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("nameStore")); // writing to object o.writeObject(nameStore); o.close(); // reading from object ObjectInputStream in = new ObjectInputStream(new FileInputStream("nameStore")); NameStore nameStore1 = (NameStore)in.readObject(); System.out.println(nameStore1); }}
上面例子的輸出:
NameStore{firstName='Steve', middleName='null', lastName='Jobs'}
middleName 變量被申明為 transient,因此沒有被序列化.
看完上述內容,你們掌握Java中transient關鍵字的原理是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。