Gee*_*eek 8 java inheritance serialization
根据Effective Java:
为继承而设计的类应该很少实现Serializable,接口应该很少扩展它.
这句话背后的原因是什么?换句话说,如果他们实现Serializable接口会出现什么问题?
同一项目中的下一句话说:
为继承而设计的类(第17项)应该很少实现Serializable,接口应该很少扩展它.违反此规则会给扩展类或实现接口的任何人带来沉重的负担.有时候违反规则是合适的.例如,如果类或接口主要存在于需要所有参与者实现Serializable的框架中,那么实现或扩展Serializable的类或接口就非常有意义.
由于我不希望Josh因侵犯版权而受到抨击(尽可能酷),我不会复制这个答案中的所有项目.我只想说这个问题的原因在本项目的其余部分进行了解释.
编辑:乔希列出了一些实施成本Serializable.如果接口/超类实现它,则会将成本强制转换为扩展类.
实现Serializable的一个主要成本是它降低了一旦发布后更改类的实现的灵活性....
...
实现Serializable的第二个成本是它增加了错误和安全漏洞的可能性....
实现Serializable的第三个成本是它增加了与发布新版本类相关的测试负担.
如果基类或接口实现Serializable,它会强制每个子类或实现,以履行超类或接口的约定,以确保子类或实现也是可序列化的.
例如,这可以防止任何实现添加非瞬态且不可序列化到其实现的字段.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |