有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

如果没有,也许你可以告诉我原因

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

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

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

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


共 (3) 个答案

  1. # 1 楼答案

    类中的所有引用也必须是可序列化的类型,甚至是闭包类型。它是一个界面吗?它必须扩展java。伊奥。可序列化接口

    即:

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

    编辑,澄清。:)

  2. # 2 楼答案

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

    如果你不关心你的代码是否在一个完全随机的点上停止工作,你可能想考虑一个简单的本地类来代替(或另外)和匿名的内部类。p>

  3. # 3 楼答案

    Is there a standard closure interface that is Serializable?

    我想不是