因为 Java 语言要求所有接口(interface)成员都是公开的,而最初的设计者不想强制 java.io.Serializable
的“方法”公开,所以这在 java 。
Scala 没有这个限制,但是像 readObject
/writeObject
这样的东西仍然没有在 scala.Serializable
trait 中指定。
这不会对开发人员有所帮助吗,因为
- 他们保证他们的签名是正确的
- 这将使访问这些方法变得不那么尴尬。
还是我错过了一些重要的事情?
最佳答案
or do I miss something important?
是的,你有。
readObject/writeObject 方法必须是私有(private)的并且不能被重写以使机制正常工作。
它们也以相反的方式被调用(即父类(super class)->类)。此外,您确实希望该方法保持私有(private)以防止滥用(和显式调用)
Serializable 机制还提供了其他方法:像 writeReplace+readResolve,通常不会在同一个类中使用 + readObjectNoData(这不是很有用)。
现在,如果您需要特定方法,请查看 java.io.Externalizable。它确实发布了它的方法,并且实现它会覆盖默认的序列化机制。
关于java - 为什么 scala.Serializable 不指定任何方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318562/