溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中transient關(guān)鍵字的原理是什么

發(fā)布時(shí)間:2021-07-23 15:58:52 來源:億速云 閱讀:156 作者:Leah 欄目:編程語言

Java中transient關(guān)鍵字的原理是什么,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

什么是序列化

序列化是對(duì)象進(jìn)行持久化處理,也就是說,將對(duì)象轉(zhuǎn)化成一個(gè)字節(jié)流進(jìn)行存儲(chǔ)(比如存儲(chǔ)為一個(gè)字節(jié)文件)或傳輸(通過網(wǎng)絡(luò)傳輸字節(jié))。同時(shí),我們也可以從字節(jié)中反序列化一個(gè)對(duì)象出來。這是Java程序中一個(gè)重要的概念,因?yàn)榫W(wǎng)絡(luò)應(yīng)用中通常需要將對(duì)象序列化成字節(jié)傳輸。每一個(gè)需要序列化的對(duì)象,都要實(shí)現(xiàn) Serializable 接口。

transient關(guān)鍵字

默認(rèn)情況下,對(duì)象所有的變量都會(huì)轉(zhuǎn)變成持久狀態(tài)。但是有時(shí)候,一些變量可能不需要序列化,因?yàn)闆]必要對(duì)這些變量進(jìn)行序列化。這時(shí),你就可以將這些變量申明為 transient。如果一個(gè)變量被申明為 transient,那么這個(gè)變量就不會(huì)被序列化。

通過下面這個(gè)例子應(yīng)該能夠解釋 transient 關(guān)鍵字的作用:

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,因此沒有被序列化.

看完上述內(nèi)容,你們掌握J(rèn)ava中transient關(guān)鍵字的原理是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI