Сериализация неизменяемых Java-классов в ActionScript с помощью LCDS - PullRequest
7 голосов
/ 06 октября 2009

У меня есть сложный объект, который управляется системой управления данными LCDS DataServices, создается / обновляется и т. Д. С использованием пользовательских ассемблеров. Подавляющее большинство объектной иерархии корректно сериализуется / десериализуется, но я столкнулся с камнем преткновения, когда дело доходит до сериализации неизменяемых классов Java.

В мире Java только я бы использовал методы Java Java writeReplace и readResolve, как описывает этот превосходный блог:

Именно так я и написал свой java-класс, ожидая, что livecycle вызовет метод writeReplace и должным образом заменит неизменяемый класс на изменяемый для сериализации. Однако может показаться, что lcds ничего не знает о методе writeReplace и будет вызывать только readExternal / writeExternal, игнорируя readResolve и writeReplace.

Во-первых, другие люди обнаружили, что это так, или я что-то упустил?

Во-вторых, кто-нибудь придумал подходящий метод для десериализации классов actioncript в неизменяемые объекты или синглтоны?

Большое спасибо

Ответы [ 3 ]

5 голосов
/ 04 ноября 2009

Да, это общая проблема. Adobe рекомендует, чтобы тип Java с неизменяемыми свойствами реализовывал Externalizable, а эквивалентный тип ActionScript - IExternalizable.

2 голосов
/ 06 декабря 2009

Не планируется обрабатывать writeReplace и readResolve, но вы можете запросить запрос функции http://bugs.adobe.com/jira/browse/BLZ

При реализации пользовательской сериализации позаботьтесь о том, чтобы вы потеряли некоторые преимущества, такие как сжатие чисел и выявление дублирующихся строк. Одна идея состоит в том, чтобы взглянуть на действительный механизм сериализации и изменить его соответствующим образом.

Однако, если вы заинтересованы только в сериализации свойств только для чтения, это усовершенствование было реализовано в BlazeDS, посмотрите здесь: http://bugs.adobe.com/jira/browse/BLZ-427

1 голос
/ 04 ноября 2011

самый короткий и полный ответ, который я нашел: http://expertdevelopers.blogspot.com/2010/07/serializable-vs-externalizable.html

...