0

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

首先,我的课程如下所示:


--- JAVA ---

接口 I
(抽象) A 类实现 I
B 类扩展 A

--- 动作脚本 ---

接口 I
Class A 实现 I
Class B extends 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类型的成员变量?这让我发疯了。

提前致谢。

4

2 回答 2

0

我遇到了同样奇怪的问题。

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

在 Java 中,我有 Message 类。在 Flex 中,我有 Message 类。

当从服务器获取远程java对象并在Flex中转换为Message类型时,会出现这个错误。奇怪的是,第一次从远程java对象转换为Flex中的Message类型是可以的,没有报错;但在第二次,它会失败并显示错误。

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

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

于 2011-01-06T10:39:08.520 回答
0

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

于 2010-05-24T15:08:49.003 回答