Java基礎 transient關鍵字

2021-07-12 03:19:35 字數 1089 閱讀 8500

使用場景:當乙個類實現了serilizable介面,那麼這個類的所有屬性和方法都可以被序列化。但有時,我們不希望有些屬性被序列化,那麼我們可以用transient關鍵字修飾這個屬性。

public

class

user

implements

serializable

public

void

setusername(string username)

public string getpasswd()

public

void

setpasswd(string passwd)

}

注:

乙個靜態變數不管是否被transient修飾,均不能被序列化。

transient關鍵字只能修飾變數,而不能修飾方法和類。

區域性變數是不能被transient關鍵字修飾的。

transient關鍵字修飾的變數如果是使用者自定義類變數,則該類需要實現serializable介面。

例外情況:

物件的序列化可以通過實現兩種介面來實現:若實現的是serializable介面,則所有的序列化將會自動進行;若實現的是externalizable介面,則沒有任何東西可以自動序列化,需要在writeexternal方法中進行手工指定所要序列化的變數,這與是否被transient修飾無關。

public

class

externalizabletest

implements

externalizable

@override

public

void

readexternal(objectinput in) throws ioexception,

classnotfoundexception

public

static

void

main(string args) throws exception

}

Transient註解的作用

entity table name log login public class log login id column name s id unique true,nullable false generatedvalue generator system uuid genericgenerato...

transient關鍵字詳解

一旦變數被transient修飾,變數將不再是物件持久化的一部分,該變數內容在序列化後無法獲得訪問。transient關鍵字只能修飾變數,而不能修飾方法和類。注意,本地變數是不能被transient關鍵字修飾的。變數如果是使用者自定義類變數,則該類需要實現serializable介面。乙個靜態變數不...

transient關鍵字的使用

我們一般使用實現介面serializable或者externalizable來對乙個類進行序列化,二者的區別在於前者是自動序列化的,而後者則需要手動進行序列化,即實現該介面的writeexternal 和 readexternal 方法。transient關鍵字可用於修飾已實現了上述兩個介面的類的成...