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

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

发布时间:2020-12-15 05:12:59 所属栏目:百科 来源:网络整理
导读:环境:BlazeDS 3.0.0.544 ? BlazeDS很好的帮助我们实现java对象和Flex对象的相互转化,减少了我们的硬编程量,很方便。 但是最近遇到一个问题,描述如下: ? java 中有两个类,其中一个类中有一个变量是另一个类的类型,如下: Java代码 ? public ? class ?M

环境:BlazeDS 3.0.0.544

?

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. ??
  8. public?class?InnerMyClass?{//?假设此类在com.test.b中??
  9. ????????private?String?aValue;??
  10. ??
  11. ????????//?...?getters?and?setters??
  12. }??

?

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

Java代码 ?

收藏代码

  1. //?假设两个类不在一个包中??
  2. package?a.vo{??
  3. ????[Bindable]??
  4. ????[RemoteClass(alias="com.test.a.MyClass")]??
  5. ????public?class?MyClass?{??
  6. ????????????private?InnerMyClass?inclass;??
  7. ????????????private?String?name;??
  8. ??
  9. ????????????//?...?getters?and?setters??
  10. ????}??
  11. ????//?...??
  12. }??
  13. ??
  14. package?b.vo{??
  15. ????[Bindable]??
  16. ????[RemoteClass(alias="com.test.b.InnerMyClass")]??
  17. ????public?class?InnerMyClass?{??
  18. ????????????private?String?aValue;??
  19. ??
  20. ????????????//?...?getters?and?setters??
  21. ????}??
  22. ????//?...??
  23. }??

?

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

修改MyClass为:

Java代码 ?

收藏代码

  1. package?a.vo{??
  2. ????[Bindable]??
  3. ????[RemoteClass(alias="com.test.a.MyClass")]??
  4. ????import?b.vo.InnerMyClass;//?加了这句话??
  5. ????public?class?MyClass?{??
  6. ????????????private?InnerMyClass?inclass;??
  7. ????????????private?String?name;??
  8. ??
  9. ????????????//?...?getters?and?setters??
  10. ????}??
  11. ????//?...??
  12. }??
?

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

是不是MyClass呢?

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

那是什么呢?

-- HashMap。

为什么会是这样呢?

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

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

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

Java代码 ?

收藏代码

  1. package?a.vo{??
  2. ????[Bindable]??
  3. ????[RemoteClass(alias="com.test.a.MyClass")]??
  4. ????//?import?b.vo.InnerMyClass;//?去掉这句话??
  5. ????public?class?MyClass?{??
  6. ????????????private?b.vo.InnerMyClass?inclass;?//?在此处加上对InnerMyClass?的引用??
  7. ????????????private?String?name;??
  8. ??
  9. ????????????//?...?getters?and?setters??
  10. ????}??
  11. ????//?...??
  12. }??
?

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

?

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

转自:http://fandayrockworld.iteye.com/blog/966236

(编辑:李大同)

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

    推荐文章
      热点阅读