为什么只有Serializable
标记接口,并且不需要通过合同实现readObject()
和writeObject()
。它会更有意义吗?为什么Serializable接口不需要实现readObject()和writeObject()
0
A
回答
2
序列化机制能够在没有任何readObject()
和writeObject()
方法的情况下序列化对象。但它需要你指定它可以或不可以序列化的对象。一些对象保存数据,这是有意义的序列化。其他一些则没有。例如,序列化字符串是有意义的,但是序列化Socket或数据库连接不会。 所以你简单地通过让他们的类实现Serializable接口来标记哪些对象可以被序列化。
如果您想要更多地控制对象的状态被序列化和反序列化的方式,那么您可以使用这两种方法。
+0
但是,如果至少需要空方法实现这些方法,而不是冒着程序员在添加'read/writeObject'时忘记私有访问修饰符或者没有被编译器强制执行而失败的错误,在运行时默默地?这背后的动机是不是通过具有相同安全问题的对象api暴露这些方法? –
+1
问题是接口迫使类定义公共方法。他们不能强迫班级去定义私人班级。而这些方法不应该公开。无论如何,如果这些方法很重要,应该使用单元测试。 –
相关问题
- 1. 类实现Serializable接口不能的readObject
- 2. 实现Serializable而不提供writeObject/readObject方法
- 3. Java中的Serializable - writeObject()/ ReadObject和Externalizable - readExternal()/ writeExternal()有什么区别?
- 4. 比较器为什么要实现Serializable?
- 5. ActionSupport为什么要实现Serializable
- 6. 为什么实现Serializable接口的类实现none接口的方法?
- 7. 为什么传输对象需要实现Serializable?
- 8. writeObject和readObject如何工作?
- 9. 为什么Java.lang.Object没有实现Serializable接口?
- 10. 的getString实现Serializable接口
- 11. DTO实现Serializable接口
- 12. 为什么我们要实现接口?
- 13. 为什么我们不需要实现Serializable来序列化为xml
- 14. 实现接口的抽象类不需要方法实现。为什么?
- 15. 什么时候需要一个序列化对象中的自定义readObject/writeObject?
- 16. 为什么布尔包装类实现Serializable接口和Comparable接口?它有什么用处?
- 17. 为什么需要实现可串行化接口?
- 18. Java为什么需要实现一个接口?
- 19. 什么是一个不需要实现的接口?
- 20. 什么是[Serializable接口]和[序列化()]
- 21. 为什么的AtomicInteger实现Serializable
- 22. 何时以及为什么JPA实体应该实现Serializable接口?
- 23. 何时重写writeObject/readObject?
- 24. 序列化 - readObject writeObject覆盖
- 25. 为什么实现接口的泛型类不需要构造函数?
- 26. 为什么我们有Externalizable当我们可以覆盖java中的writeObject和readObject
- 27. 为什么我需要Iterator接口,为什么要使用它?
- 28. 只是描述接口描述实现需要做什么?
- 29. 为什么Golang需要接口?
- 30. 为什么我们需要IAudioRenderClient接口
这就是它设计的方式。序列化只是一个标记界面。 –
它保持这种方式向后兼容。 –
如果您将其标记为“Serializable”,则可能会对某些数据造成潜在的安全风险,基本上允许网络发送和接收此类数据。 –