![]() |
Множественное наследование
Использую BLAZEDS для связи с java WEB приложением.
На java есть классы: Код:
public class BasicObject implements Serializable {Код:
public List<BasicObject> getObjects() {ElDocument в тип BasicObject, при этом часть полей из ElDocument обнуляются. Как решить такую проблему, используя общепринятые подходы ООП? При попытке во FLEX множественно унаследовать ElDocument от BasicObject выдается ошибка. |
Не использовать DCD, оно просто плохо работает, и от него больше головной боли, чем толку.
В вашем примере в упор не могу разглядеть множественное наследование... где оно? В AS3 поддерживается только множественное наследование у интерфейсов, у классов его нет. В принципе ваш пример должен работать, ну, на вид, нет в нем ничего такого, что бы помешало. То же самое нормально работает в PHP например. |
Да, вроде все слаженно. Хотя можно посмотреть на модель объектов во Flex'е.
Кстати, между идентефикатором управления доступом protected в Java и AS3 есть небольшие различия. Маловероятно, но все-таки можно допустить, что это могло привести к несоответствиям. |
сериализуются только паблик свойства.
И, это.. а где про множественное наследование? ))))) |
Я так понял что на флексе у тебя есть 2 класса:
BasicObject и ElDocument extends BasicObject На яве у тебя тоже должно быть 2 класса: BasicObject и ElDocument extends BasicObject притом оба класса на флексе должны быть pарегестрированны: registerClassAlias("BasicObject", "BasicObject"); registerClassAlias("ElDocument", "ElDocument"); или через [RemoteClass], но это работает не всегда. если же ты замапил 1 ява класс на два флексовых, то будет такой эффект. Если же ты на флексе зарегистрировал 1 класс BasicObject и с явы пытаешь послать ElDocument, который на яве наследуется от BasicObject. То на флексе тебе прилетит не то, ибо флекс сериализует/десериализует один к одному (по мапе) и про наследование он ничего не знает и знать не будет. ЗЫ: Множественное наследование - это когда класс наследуется от нескольких классов-родителей. Скажем: ElDocument extends BasicObject, SecondObject. Такое в яве и флексе не поддерживается |
Прошу прощения что сразу подробно не описал:
на яве есть 2 класса Код:
public class BasicObject implements Serializable {Код:
[ExcludeClass]Код:
[ExcludeClass]Поля серриализуемых объектов все публичные. Если нельзя так, то какое есть красивое решение? Неужели для каждого типа объекта надо создавать свой метод? |
А зачем такие хитрые манипуляции:
проверить если алиаса для класса нету то зарегистрировать, если упала ошибка, то зарегистрировать... Ещё и лишные классы заводить какие-то... зачем? пиши просто сразу: Код:
registerClassAlias("BasicObject", "BasicObject");Код:
BasicObject extends EventDispatcherКод:
ElDocument extends BasicObject |
alexberkut
Эти "хитрые манипуляции" генерит флексовый компилятор, ввиду большого ума разработчиков. Я даже постил багу, чтобы поправили, меня не поняли и сказали, что фиксить не будут, т.как не понимают в чем глупость в коде... вот так вот. |
Ещё один повод руками писать классы, а не пользоваться всякими рукозаменителями.
|
| Часовой пояс GMT +4, время: 05:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.