您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java transient關鍵字原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Java 中的 transient 關鍵字被用來表示變量將不被序列化處理。那么在理解 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,因此沒有被序列化.
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。