所以我们有一个带有两个泛型ArrayList的java类。它看起来像
public class Blah
{
public ArrayList<ConcreteClass> a;
public ArrayList<BaseClass> b;
}
通过在actionscript类中使用[ArrayElementType('ConcreteClass')],我们可以将所有“a”转换为罚款。但是对于“b”,由于实际的类是一个异类混合的类,如BaseClassImplementation1,BaseClassImplementation2等,它被输入为一个对象。有没有办法将它转换为特定的具体类,假设客户端存在java类的强类型AS版本
感谢您的帮助! 吉斯
答案 0 :(得分:2)
要确保所有DTO类都跨AS和Java编组,您需要使用指向java类定义的“RemoteClass”属性将每个远程类定义为AS中的“远程类”[RemoteClass] (别名= “com.myco.class”)]。
BlazeDS将对类进行内省,因为它正在被序列化/反序列化并适当地转换它(参见下面的文档)。如何将类打包或嵌套在数组中并不重要,只要它可以被内省它应该工作。
如果需要对类进行特殊序列化,可以通过扩展“AbastractProxy”并在启动时使用PropertyProxyRegistry寄存器方法将它们加载到blazeds中来创建自己的序列化代理(称为beanproxy)。
你会在Blaze开发者指南http://livedocs.adobe.com/blazeds/1/blazeds_devguide/中找到大部分内容。
创建自己的beanproxy类在这里查看://livedocs.adobe.com/blazeds/1/javadoc/flex/messaging/io/BeanProxy.html