0

我有一个实现的类,我通过一个类型为 的对象来Serializable保护这个类的不变量。可以让它暂时化还是会产生任何不需要的副作用?Object

代码 :

class MyClass implements Serializable{

 private final transient lock = new Object();
  ....
}
4

2 回答 2

8

您应该做的是使用空数组(偶数new Object[0])。空数组是可序列化的,而new Object()不是。

做就是了:

private final Object lock = new Object[0];

自动(反)序列化将按预期工作,将重新创建锁。它可能会比 占用更多的内存new Object(),但应该可以忽略不计,并且序列化空间也会增加几个字节。

但如果您想避免自定义序列化,它绝对是最简单的解决方案。

于 2013-11-15T20:34:06.443 回答
2

这很好,只要您在反序列化时重新创建对象,以便您有一些东西可以同步。

此外,您可能必须删除final修饰符

由您决定这是否值得麻烦。

于 2013-03-26T14:03:53.497 回答