2012-02-27 79 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。您最終可能會序列化不必要的成員狀態。