第 86 条:谨慎地实现 Serializable 接口
2022-06-27 本文已影响0人
综合楼
谨慎地实现 Serializable 接口.jpeg
没看懂先记着:
如果实现具有可序列化和可扩展的实例字段的类,则需要注意这几个风险。如果实例字段值上存在任何约束条件,则防止子类覆盖 finalize 方法至关重要,该类可以通过重写 finalize 并将其声明为 final 来完成。否则,该类将容易受到终结者攻击。最后,如果类的实例字段初始化为其默认值(整数类型为零,布尔值为 false,对象引用类型为 null),则会违反约束条件,必须为此添加 readObjectNoData 方法:
// readObjectNoData for stateful extendable serializable classes
private void readObjectNoData() throws InvalidObjectException {
throw new InvalidObjectException("Stream data required");
}