我在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的成员变量?这让我疯了。
提前致谢。
答案 0 :(得分:0)
检查服务调用返回的对象的类型(使用Flash Builder中的调试器检查结果)。可能它们没有正确转换为B类并且创建了ObjectProxy。如果不是这样,请发布您的代码。
答案 1 :(得分:0)
我有同样的奇怪问题。
我的情况是这样的: 我用Flex 4 + Spring开发了一个Web应用程序
在Java中,我有类消息。 在Flex中,我有类消息。
从服务器获取远程java对象并在Flex中强制转换为Message类型时,将发生此错误。奇怪的是,第一次,可以从远程java对象转换为Flex中的Message类型,并且没有错误;但在第二次,它会失败,并会显示错误。
要解决这个问题,我有一个解决方案:使用registerClassAlias()方法注册远程java类。
但我想知道是否还有其他解决方案可以解决这个问题。这是Flex的错误吗?