加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用BlazeDS实现java与flex传对象时,RemoteClass中包含自己写的

发布时间:2020-12-15 01:06:45 所属栏目:百科 来源:网络整理
导读:环境:BlazeDS 3.0.0.544 ?http://fandayrockworld.iteye.com/blog/966236 BlazeDS很好的帮助我们实现java对象和Flex对象的相互转化,减少了我们的硬编程量,很方便。 但是最近遇到一个问题,描述如下: ? java 中有两个类,其中一个类中有一个变量是另一个

环境:BlazeDS 3.0.0.544

?http://fandayrockworld.iteye.com/blog/966236

BlazeDS很好的帮助我们实现java对象和Flex对象的相互转化,减少了我们的硬编程量,很方便。

但是最近遇到一个问题,描述如下:

?

java 中有两个类,其中一个类中有一个变量是另一个类的类型,如下:

Java代码??

收藏代码

  1. public?class?MyClass?{//?假设此类在com.test.a中??
  2. ????????private?InnerMyClass?inclass;??
  3. private?String?name;??
  4. ??
  5. ????????//?...?getters?and?setters??
  6. }??
  7. class?InnerMyClass?{//?假设此类在com.test.b中??
  8. private?String?aValue;??
  9. }??

?

这样,如果想通过BlazeDS实现Flex和java的对象传递,必须在Flex中同样写两个类:

//?假设两个类不在一个包中??
  • package?a.vo{??
  • ????[Bindable]??
  • ????[RemoteClass(alias="com.test.a.MyClass")]??
  • ????class?MyClass?{??
  • ???????????? ???????????? ????}??
  • ????//?...??
  • package?b.vo{??
  • ????[RemoteClass(alias="com.test.b.InnerMyClass")]??
  • class?InnerMyClass?{??
  • }??
  • ?

    但是,这样写编译器就会报错了,很简单,原因是MyClass没有引入InnerMyClass,为了不报错,我们通常情况下会这么做:

    修改MyClass为:

    import?b.vo.InnerMyClass;//?加了这句话??
  • }??
  • ?

    这样我们就向后台传值,但是后台取到的是什么对象呢?

    是不是MyClass呢?

    -- 很遗憾的告诉大家,不是。

    那是什么呢?

    -- HashMap。

    为什么会是这样呢?

    -- 这个请参阅BlazeDS的官方文档。

    我们应该怎么做才能让后台取到的是一个MyClass对象呢?

    -- 像下面似的把MyClass改为:

    //?import?b.vo.InnerMyClass;//?去掉这句话??
  • private?b.vo.InnerMyClass?inclass;?//?在此处加上对InnerMyClass?的引用??
  • }??
  • ?

    这样java端就能取到MyClass的对象了。

    ?

    至于为什么加上import就取不到MyClass对象,这个我还没研究出来,期待大家探讨。

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读