Java transient關鍵字使用小記

原博文http://www.cnblogs.com/lanxuezaipiao/p/3369962.htmlhtml

        一個對象只要實現了Serilizable接口,這個對象就能夠被序列化,java的這種序列化模式爲開發者提供了不少便利,咱們能夠沒必要關係具體序列化的過程,只要這個類實現了Serilizable接口,這個類的全部屬性和方法都會自動序列化。java

        總之,java 的transient關鍵字爲咱們提供了便利,你只須要實現Serilizable接口,將不須要序列化的屬性前添加關鍵字transient,序列化對象的時候,這個屬性就不會序列化到指定的目的地中。spa


transient使用小結
orm

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

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

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


第三點確實沒錯(一個靜態變量無論是否被transient修飾,均不能被序列化),反序列化後類中static型變量username的值爲當前JVM中對應static變量的值,這個值是JVM中的不是反序列化得出的接口

transient使用細節——被transient關鍵字修飾的變量真的不能被序列化嗎ip

    Java中,對象的序列化能夠經過實現兩種接口來實現,若實現的是Serializable接口,則全部的序列化將會自動進行,若實現的是Externalizable接口,則沒有任何東西能夠自動序列化,須要在writeExternal方法中進行手工指定所要序列化的變量,這與是否被transient修飾無關。所以第二個例子輸出的是變量content初始化的內容,而不是null。開發

相關文章
相關標籤/搜索