ActionScript:使用BlazeDS / AMF和类接口键入强制问题

时间:2010-05-24 12:08:54

标签: flex actionscript blazeds amf

我在Java / Hibernate / BlazeDS / Flex-Setup中遇到类型强制问题。

首先,我的课程如下:


--- JAVA ---

接口I
(摘要)A类实施I
B类延伸A

--- ActionScript ---

接口I
A类实施I
B类延伸A


我在所有ActionScript-Classes / Interfaces I,A和B中都获得了RemoteClass-Meta-Tags。包结构和类/接口名称完全相同。

现在问题在于: 我的Java服务通过Hibernate成功从我的数据库中检索B类对象。我有另一个类C,它具有接口类型I的成员属性,因此应该可以分配类型B的对象。但由于某种原因,我收到以下错误消息:

TypeError:错误#1034:无法将Object @ 28b44a89转换为package.name.I

我检查了服务中的Java对象类型,它是B类型,似乎完全没问题。为什么不能将类型B的对象分配给类型I的成员变量?这让我疯了。

提前致谢。

2 个答案:

答案 0 :(得分:0)

检查服务调用返回的对象的类型(使用Flash Builder中的调试器检查结果)。可能它们没有正确转换为B类并且创建了ObjectProxy。如果不是这样,请发布您的代码。

答案 1 :(得分:0)

我有同样的奇怪问题。

我的情况是这样的: 我用Flex 4 + Spring开发了一个Web应用程序

在Java中,我有类消息。 在Flex中,我有类消息。

从服务器获取远程java对象并在Flex中强制转换为Message类型时,将发生此错误。奇怪的是,第一次,可以从远程java对象转换为Flex中的Message类型,并且没有错误;但在第二次,它会失败,并会显示错误。

要解决这个问题,我有一个解决方案:使用registerClassAlias()方法注册远程java类。

但我想知道是否还有其他解决方案可以解决这个问题。这是Flex的错误吗?