如果没有,也许你可以告诉我原因。
当我的类被序列化时,我得到NotSerializableException。
在课程内部,我将这个匿名类传递给方法:
new org.apache.commons.collections.Closure() {
...
};
这个问题仍然没有答案。我想知道是否有一个标准的Closure接口实现了Serializable
答案 0 :(得分:2)
您的类中的所有引用也必须是Serializable类型,甚至是Closure类型。它是一个界面吗?它必须扩展java.io.Serializable接口。
即:
interface Closure extends java.io.Serializable {
...
}
class YourClass implements java.io.Serializable {
private Closure closure;
...
public void setClosure(Closure closure) {
this.closure = closure;
}
}
...
private static void main(String[] args) {
YourClass y = new YourClass();
y.setClosure(new Closure() {
...
});
...
编辑,澄清。 :)
答案 1 :(得分:2)
这里的主要问题是嵌套类没有标准化的序列形式。另请注意,如果您在实例方法中,外部类对象也将被序列化(通过具有未指定名称的字段)。
如果您不关心代码是否在完全随机的位置停止工作,您可能需要考虑使用普通的本地类(或者除此之外)和匿名内部类。
答案 2 :(得分:0)
是否有标准的闭包界面 那是Serializable?
我猜不是。