2012-02-27 81 views
7

是否有可能在Java中匿名类的搜索/解密?Java中的匿名类的序列化

例子:

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端点自定义任务并将它们序列化到数据库中以及时运行它们。

回答

6

这是可能的,危险的。匿名类的名称/编号由编译器生成,并基于它们在文件中的显示顺序。例如如果交换两个类的顺序,它们的名称也会互换。 (类按名称反序列化)

0

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

0

当然!在你的案例类任务应该实现Serializable接口。

6

请注意,除了执行Serializable的任务外,外部类也必须是Serializable。您最终可能会序列化不必要的成员状态。