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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

关于java的关键字 transient

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

我們都知道一個對象只要實現了Serilizable接口,這個對象就可以被序列化,Java的這種序列化模式為開發者提供了很多便利,我們可以不必關系具體序列化的過程,只要這個類實現了Serilizable接口,這個的所有屬性和方法都會自動序列化。

?

然而在實際開發過程中,我們常常會遇到這樣的問題,這個類的有些屬性需要序列化,而其他屬性不需要被序列化,誠然,你可以讓這個類來實現Externalizable接口,這個接口是Serilizable的子接口,但是你必須實現readExternal和writeExternal方法,你可以在這兩個方法中實現具體屬性的反序列化和序列化操作。然而這就意味著你必須在這兩個方法中手工編寫額外的代碼來進行具體屬性的序列化。java的transient關鍵字為我們提供了便利,你只需要實現Serilizable接口,將不需要序列化的屬性前添加關鍵字transient,序列化對象的時候,這個屬性就不會序列化到指定的目的地中。

?

?

package com.zslin.list.demo; import java.io.Serializable;/** * * @author WQ<br> * @version 創建時間:2017年6月18日 上午10:33:15<br> */ public 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;} }

?

?

package com.zslin.list.demo;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream;/*** * @author WQ<br>* @version 創建時間:2017年6月18日 上午10:34:09<br>*/ public class TestTransient {public static void main(String[] args) throws IOException,ClassNotFoundException {A a = new A(25, "張三");System.out.println(a);ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D://mm.txt"));oos.writeObject(a);oos.close();ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://mm.txt"));a = (A) ois.readObject();System.out.println(a);} }

?

運行結果:

?

?

?在上面的例子中,我將屬性b前添加關鍵字transient,我們看到雖然我們序列化的對象a的屬性值為“張三”,但是當我們反序列化之后發現這個屬性為空,說明這個屬性沒有進行序列化。

?

transient使用小結?

1)一旦變量被transient修飾,變量將不再是對象持久化的一部分,該變量內容在序列化后無法獲得訪問。

2)transient關鍵字只能修飾變量,而不能修飾方法和類。注意,本地變量是不能被transient關鍵字修飾的。變量如果是用戶自定義類變量,則該類需要實現Serializable接口。

3)被transient關鍵字修飾的變量不再能被序列化,一個靜態變量不管是否被transient修飾,均不能被序列化。

?

我們也可以,通過ArrayList 源碼中的 ?elementData ?屬性,進一步學習transient這一屬性。

具體可以參照我的上一篇博客。

以上。

?

轉載于:https://www.cnblogs.com/mr-wuxiansheng/p/7043751.html

總結

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

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