如果Serializable
接口只是一个用来传递java类的元数据的Marker-Interface,那我就有点困惑了:
在阅读了java的序列化算法(元数据从下到上,然后是实际的实例数据从上到下)的过程后,我真的不能理解无法通过该算法处理的数据。
简而言之,:
NotSerializableException
implements Serializable
子句?发布于 2013-05-31 14:38:30
当您谈论NotSerializableException
时,当您想序列化一个对象时抛出它,该对象没有被标记为Serializable
-仅此而已,尽管当您扩展非序列化类并添加Serializable
接口时,它完全没有问题。
没有不能序列化的数据。
发布于 2013-05-31 14:39:12
首先,如果您不打算序列化类的实例,则甚至不需要考虑序列化它。只实现你需要的东西,并且不要仅仅为了你的类而使你的类可序列化。
如果您的对象有一个对任何不可序列化对象的引用(可传递的或直接的),并且此引用没有用transient
关键字标记,那么您的对象将是不可序列化的。
通常,序列化不能在以后或其他地方反序列化时重用的对象是没有意义的。这可能是因为对象的状态只在此时此地有意义(例如,如果它有一个对正在运行的线程的引用),或者因为它使用了一些资源,如套接字、数据库连接或类似的资源。很多对象并不表示数据,并且不应该是可序列化的。
发布于 2013-05-31 14:37:01
任何不是Serializable
的Serializable
类都会抛出这个异常。您可以通过使用transient
关键字来避免这种情况。
无法序列化的常见示例包括Swing组件和线程。如果你仔细想想,这是有意义的,因为你永远不可能反序列化它们,让它变得有意义。
https://stackoverflow.com/questions/16851070
复制相似问题