繁体   English   中英

Java中匿名类的序列化

[英]Serialization of anonymous class in Java

是否可以在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"));
    }
});

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

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

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

这当然是可能的。 Java为匿名类生成内部名称(类似于DeclaredInThisClass $ 1,如果在名为DeclaredInThisClass的类中声明它们,则为DeclaredInThisClass $ 2)并且将很乐意序列化/反序列化它们。

当然! 在您的案例类中,Task应该实现Serializable接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM