ActionScript: проблема приведения типов с BlazeDS / AMF и интерфейсами классов - PullRequest
0 голосов
/ 24 мая 2010

У меня проблема с приведением типов в Java / Hibernate / BlazeDS / Flex-Setup.

Прежде всего, мои занятия выглядят так:


--- JAVA ---

Интерфейс I
(Аннотация) Класс A реализует I
Класс B расширяет A

--- ActionScript ---

Интерфейс I
Класс А реализует I
Класс B расширяет A


Я получил мета-теги RemoteClass во всех классах / интерфейсах ActionScript I, A и B. Структура пакета и имена классов / интерфейсов абсолютно одинаковы.

Теперь вот проблема: Мой Java-сервис успешно извлекает объекты класса B из моей базы данных через Hibernate. Я получил другой класс C, у которого есть свойство member типа интерфейса I, поэтому должна быть возможность назначить объект типа B. Но по какой-то причине я получаю следующее сообщение об ошибке:

Ошибка типа: ошибка # 1034: невозможно преобразовать объект @ 28b44a89 в имя_пакета.I

Я проверил тип объекта Java в сервисе, и он относится к типу B и, кажется, полностью в порядке. Почему объект типа B нельзя присвоить переменной-члену типа I? Это сводит меня с ума.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 января 2011

У меня такая же странная проблема.

Моя ситуация такова: Я разрабатываю веб-приложение с Flex 4 + Spring

В Java у меня есть класс Message. Во Flex у меня есть класс Message.

При получении удаленного объекта Java с сервера и приведении к типу сообщения во Flex эта ошибка произойдет. Странно то, что в первый раз можно привести тип сообщения во Flex из удаленного объекта Java, и в нем нет ошибки; но во второй раз это не удастся, и будет показана ошибка.

Чтобы решить эту проблему, у меня есть одно решение: использовать метод registerClassAlias ​​() для регистрации в удаленном классе Java.

Но мне интересно, есть ли другое решение для этой проблемы. Это ошибка Flex?

0 голосов
/ 24 мая 2010

Проверьте тип объектов, возвращаемых вызовом службы (проверьте результат с помощью отладчика в Flash Builder). Может быть, они неправильно преобразованы в тип B и создан ObjectProxy. Если это не так, пожалуйста, оставьте свой код.

...