2009-10-06 27 views
7

我有一個複雜的對象,由LCDS DataServices數據管理器管理,並使用自定義彙編器創建/更新等。絕大多數對象層次結構都是正確序列化/反序列化的,但是當涉及序列化不可變的Java類時,我碰到了一個絆腳石。使用LCDS將不可變的java類序列化爲actionscript

在Java作爲這個優秀的博客介紹了唯一的世界我會使用java writeReplace和readResolve方法來:http://lingpipe-blog.com/2009/08/10/serializing-immutable-singletons-serialization-proxy/

這是我原來寫我的java類,預期的LiveCycle調用writeReplace方法,並適時更換用於序列化的不可變類。然而,似乎lcds對writeReplace方法一無所知,只會調用readExternal/writeExternal來忽略readResolve和writeReplace。

首先,有其他人發現這是這種情況,還是我錯過了什麼?其次,有沒有人想出一個合適的方法將動作類反序列化爲不可變對象或單例?

非常感謝

回答

5

是的,這是一個常見的問題。 Adobe建議具有不可變屬性的Java類型實現Externalizable和等效ActionScript類型實現IExternalizable。

+0

感謝格雷姆。我得出了同樣的結論。我不認爲你知道任何關於writeReplace和readResolve的計劃將來會被LCDS正確處理嗎? – 2009-11-10 16:58:11

2

沒有計劃來處理writeReplace和的readResolve,但你可以要求功能請求http://bugs.adobe.com/jira/browse/BLZ

在實現您的自定義序列化照顧,你將失去像壓縮數字和識別重複的字符串一些好處。一個想法是看看實際的序列化機制並相應地修改它。

但是,如果你有興趣只是在序列化這種增強是在BlazeDS的實施只讀屬性,看看這裏:http://bugs.adobe.com/jira/browse/BLZ-427

相關問題