瞬態關鍵字將被用於防止特定變量的序列化。但爲什麼我們不應該序列化數據?有沒有內部安全?
1
A
回答
12
一些類本身不支持序列化,因爲它們代表了管理Java環境的外部資源。例如,FileOutputStream
不能真正被序列化,因爲它表示一個打開的文件句柄。 Socket
的情況也是如此:您無法保存和恢復「打開的套接字」。
如果要序列化某個具有該類型字段的對象,則必須將這些字段標記爲瞬態。
另一個理由使用transient
是當你的類做了某種內在的緩存。如果,例如,你的類可以做計算和性能的原因,緩存每次計算的結果,然後保存該緩存可能是不希望的(因爲重新計算它可能比恢復更快,或者因爲它是不可能的,舊的緩存值任何使用)。在這種情況下,你標記的緩存領域的短暫。
+0
尼斯解釋。我在想,如果我們不設置字段像FileOutputStream中短暫的,將它的序列化/反序列化過程中拋出任何異常? – 2014-12-06 07:57:15
0
如果您不想序列化任何變量/字段將其標記爲瞬態。銀行餘額,信用卡詳細信息等,如果我們序列化,然後有人可以反序列化並使用它。
4
是的,它可以安全相關,但原因也可以是在字段中的數據是從其他領域得到的,而且也沒有理由把它在這種情況下。如果可以,請節省帶寬:)
0
考慮將用戶名和密碼作爲其字段之一的類。也可以考慮在序列化之後在網絡中傳遞這個對象,並在其他地方反序列化它。
在這種scenerios瞬間將有助於
相關問題
- 1. 外部靜態變量的用途是什麼?
- 2. 多態類型的用途是什麼?
- 3. 什麼是影子變量的tensorflow的意義和它的用途是什麼?
- 4. IdentityT變壓器的用途是什麼?
- 5. Java常量池的用途是什麼?
- 6. P&P RetryPolicy,什麼是瞬態異常
- 7. ILOG Jrules中自動變量的用途是什麼?
- 8. Oracle中NLSTERRITORY會話變量的用途是什麼?
- 9. `$ .support.ownLast`的用途是什麼?
- 10. TPopupActionBar的用途是什麼?
- 11. _GLOBAL__I_的用途是什麼?
- 12. $ _POST的用途是什麼?
- 13. 「$ this」的用途是什麼?
- 14. CreateSilverlight.js的用途是什麼?
- 15. vertexAttribPointer的用途是什麼?
- 16. RecognizerIntent.DETAILS_META_DATA的用途是什麼?
- 17. Rake的用途是什麼?
- 18. javax.security.auth.callback。*的用途是什麼?
- 19. config.assets.precompile的用途是什麼?
- 20. is_uploaded_file()的用途是什麼?
- 21. archetypeArtifactId的用途是什麼?
- 22. System.Data.SqlClient.SqlParameter.IsNullable的用途是什麼?
- 23. com.sun.org.apache.xpath.internal.operations.String的用途是什麼?
- 24. FXCollections.unmodifiableObservableList的用途是什麼?
- 25. __init__的用途是什麼?
- 26. __cxa_pure_virtual的用途是什麼?
- 27. cURL的用途是什麼?
- 28. RhoMobile的用途是什麼?
- 29. curdoc()的用途是什麼?
- 30. configSections的用途是什麼?
可能欺騙[stackoverflowquestions/910374](http://stackoverflow.com/questions/910374/why-does-java-have-transient-variables) – oliholz 2011-05-11 06:50:24