当JVM看到实现Serializable的类时,它会理解什么

时间:2011-12-29 16:53:51

标签: java serialization

让我这样说吧:

What does JVM understands when it see a class implementing Serializable

为处理此问题而编写的代码是什么? (如果类是Serializable)

3 个答案:

答案 0 :(得分:2)

许多类无法被序列化 如何序列化UI元素或网络套接字或线程?

答案 1 :(得分:1)

您无需序列化(或)保存每个对象的状态。这没有意义。另一个原因可能是,默认情况下,作者可能会认为让程序员决定。以下是来自java团队的有趣讨论。

  

要求类实现的决定   java.io.Serializable接口不是轻率的。设计叫做   在开发人员的需求和需求之间取得平衡   系统能够提供可预测和安全的机制。该   最困难的设计约束是满足安全和   Java类的安全性。

     

如果要将类标记为可序列化,那么设计团队   担心开发人员,出于健忘,懒惰或   无知可能不会将类声明为Serializable然后   使该类对RMI或持久性目的无用。我们   担心这个要求会给开发者带来负担   知道将来如何使用某个班级,a   基本上未知的情况的确,我们的初步设计为   反映在alpha API中,得出的结论是默认情况为   class应该是类中的对象可序列化。我们   后来只有在安全性和正确性之后改变了我们的设计   考虑因素使我们确信默认必须是一个对象   不被序列化。

答案 2 :(得分:0)

有很多类的例子不能被序列化,而不仅仅是GUI中的那些。

来自java.lang

ClassLoader,Compiler,Math,Package,Process,Runtime,Shutdown,StrictMath,System,Thread,ThreadGroup,ThreadLocal,Void