Java transient關(guān)鍵字原理解析
這篇文章主要介紹了Java transient關(guān)鍵字原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
Java 中的 transient 關(guān)鍵字被用來表示變量將不被序列化處理。那么在理解 transient 關(guān)鍵字之前,我們先了解下什么是序列化。
什么是序列化
序列化是對(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,因此沒有被序列化.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot使用Caffeine實(shí)現(xiàn)內(nèi)存緩存示例詳解
caffeine提供了四種緩存策略:分別為手動(dòng)加載、自動(dòng)加載、異步手動(dòng)加載、異步自動(dòng)加載,這篇文章主要介紹了SpringBoot使用Caffeine實(shí)現(xiàn)內(nèi)存緩存,需要的朋友可以參考下2023-06-06
springboot接入netty實(shí)現(xiàn)在線統(tǒng)計(jì)人數(shù)
本文主要介紹了springboot接入netty實(shí)現(xiàn)在線統(tǒng)計(jì)人數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
elasticsearch集群發(fā)現(xiàn)zendiscovery的Ping機(jī)制分析
這篇文章主要為大家介紹了elasticsearch集群發(fā)現(xiàn)zendiscovery的Ping機(jī)制分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04

