Java序列化:readResolve()的访问修饰符

时间:2011-08-19 11:46:48

标签: java serialization

上面的Java文档说:

ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException; 

但我经常看到它定义为'受保护'。

同样适用于:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; 

我看到它被定义为'公开'。

关于为何Java在这里保持如此开放的任何想法,以及它们应该在专业代码中定义什么?

1 个答案:

答案 0 :(得分:1)

我将这两个定义为private:没有代码有任何理由访问这些方法/字段,只有JVM才能访问它。

为什么这样设计?我只能在这里猜测,但如果方法/字段只能由JVM访问,那么添加对正确访问修饰符的检查只会添加到复杂性而不会获得太多技术优势。