我有一个实现Serializable
的类,我通过一个类型为Object
的 lock 对象来保护这个类的不变量。是否可以使其瞬态或者它是否有任何不必要的副作用?
代码:
class MyClass implements Serializable{
private final transient lock = new Object();
....
}
答案 0 :(得分:6)
另一种方法是使用空数组(偶数new Object[0]
)。
空数组是可序列化的,而new Object()
则不是。
我习惯了:
private final Object lock = new Object[0];
答案 1 :(得分:2)
这很好,只要你recreate the object upon de-serialization,就可以进行同步了。
此外,您可能需要remove the final
modifier。
由你来决定这是否值得麻烦。