Variables may be marked transient to indicate that they are not part of the persistent state of an object.
我們都知道一個(gè)對象只要實(shí)現(xiàn)了Serilizable接口,這個(gè)對象就可以被序列化,java的這種序列化模式為開發(fā)者提供了很多便利,我們可以不必關(guān)系具體序列化的過程,只要這個(gè)類實(shí)現(xiàn)了Serilizable接口燎猛,這個(gè)類的所有屬性和方法都會(huì)自動(dòng)序列化。
然而在實(shí)際開發(fā)過程中照皆,我們常常會(huì)遇到這樣的問題重绷,這個(gè)類的有些屬性需要序列化,而其他屬性不需要被序列化膜毁,打個(gè)比方昭卓,如果一個(gè)用戶有一些敏感信息(如密碼,銀行卡號(hào)等)瘟滨,為了安全起見候醒,不希望在網(wǎng)絡(luò)操作(主要涉及到序列化操作,本地序列化緩存也適用)中被傳輸室奏,這些信息對應(yīng)的變量就可以加上transient關(guān)鍵字火焰。換句話說劲装,這個(gè)字段的生命周期僅存于調(diào)用者的內(nèi)存中而不會(huì)寫到磁盤里持久化胧沫。
總之,java 的transient關(guān)鍵字為我們提供了便利占业,你只需要實(shí)現(xiàn)Serilizable接口绒怨,將不需要序列化的屬性前添加關(guān)鍵字transient,序列化對象的時(shí)候谦疾,這個(gè)屬性就不會(huì)序列化到指定的目的地中南蹂。