1

如果没有,也许你可以告诉我为什么。

当我的类被序列化时,我得到 NotSerializableException。

在类内部,我将这个匿名类传递给一个方法:

new org.apache.commons.collections.Closure() {
   ...
};

这个问题仍然没有答案。我想知道是否有实现 Serializable 的标准 Closure 接口

4

3 回答 3

2

类中的所有引用也必须是 Serializable 类型,甚至是 Closure 类型。是接口吗?它必须扩展 java.io.Serializable 接口。

IE:

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() {
            ...
        });
        ...

编辑,澄清。:)

于 2009-03-26T09:11:03.050 回答
2

您在这里的主要问题是嵌套类没有标准化的序列形式。另请注意,如果您在实例方法中,外部类对象也将被序列化(通过未指定名称的字段)。

如果您不关心您的代码是否在完全随机的点停止工作,您可能需要考虑一个普通的本地类来代替(或除此之外)和匿名内部类。

于 2009-03-26T11:00:13.320 回答
0

是否有可序列化的标准闭包接口?

我猜不会。

于 2009-05-30T20:17:00.403 回答