日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java transient简单介绍

發布時間:2023/12/18 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java transient简单介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?我們都知道一個對象僅僅要實現了Serilizable接口,這個對象就能夠被序列化,java的這樣的序列化模式為開發人員提供了非常多便利,我們能夠不必關系詳細序列化的過程,僅僅要這個類實現了Serilizable接口,這個的全部屬性和方法都會自己主動序列化。

?????? 然而在實際開發過程中,我們經常會遇到這種問題,這個類的有些屬性須要序列化,而其它屬性不須要被序列化,誠然,你能夠讓這個類來實現Externalizable接口,這個接口是Serilizable的子接口,可是你必須實現readExternal和writeExternal方法,你能夠在這兩個方法中實現詳細屬性的反序列化和序列化操作。然而這就意味著你必須在這兩個方法中手工編寫額外的代碼來進行詳細屬性的序列化。java的transientkeyword為我們提供了便利,你僅僅須要實現Serilizable接口,將不須要序列化的屬性前加入keywordtransient,序列化對象的時候,這個屬性就不會序列化到指定的目的地中。

public class TestTransient {

/**
* @param args
* @throws IOException
* @throws FileNotFoundException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
?? A a = new A(25,"張三");
?? System.out.println(a);
?? ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c://mm.txt"));
?? oos.writeObject(a);
?? oos.close();
?? ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c://mm.txt"));
?? a = (A)ois.readObject();
?? System.out.println(a);

}

}

class A implements Serializable{
int a;
transient String b;
public A(int a,String b){
?? this.a = a;
?? this.b = b;
}
public String toString(){
?? return "a = "+a+",b = "+b;
}
}

?

執行結果例如以下:

a = 25,b = 張三
a = 25,b = null

在上面的樣例中,我將屬性b前加入keywordtransient,我們看到盡管我們序列化的對象a的屬性值為“張三”,可是當我們反序列化之后發現這個屬性為空,說明這個屬性沒有進行序列化。

轉載于:https://www.cnblogs.com/mengfanrong/p/3779727.html

總結

以上是生活随笔為你收集整理的java transient简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。