Java中匿名类的序列化

bre*_*ish 7 java serialization

是否可以在Java中对匿名类进行searialize/desearialize?

例:

ByteArrayOutputStream operationByteArrayStream = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(operationByteArrayStream);
oos.writeObject(new Task() {
    public void execute() {
        System.out.println("Do some custom task"));
    }
});
Run Code Online (Sandbox Code Playgroud)

我的问题是我想做一些自定义管理任务,这样我就不需要每个任务都有一个版本.所以我正在尝试做的是 - 通过Groovy脚本引擎通过HTTP端点发布自定义任务并将它们序列化为db以及时运行它们.

小智 7

请注意,除了实现Serializable的Task之外,外部类还必须是Serializable.您最终可能会序列化不必要的成员状态.


Pet*_*rey 6

有可能,危险.匿名类的名称/数量由编译器生成,并基于它们在文件中出现的顺序.例如,如果你交换两个类的顺序,他们的名字也将交换.(类按名称反序列化)