zoukankan      html  css  js  c++  java
  • flash > AMF > java 的对象映射关系

    flash能够提供的类型:

    代码
    package
    {
        
    import flash.utils.ByteArray;

        public 
    class ValueObject
        {
            public var stringvalue:String;
            public var intvalue :Int;
            public var booleanvalue:Boolean;
            public var dateValue:Date;
            public var numberValue:Number;
            public var bytesValue:ByteArray;
            
            public function ValueObject()
            {
            }
        }
    }
    package
    {
        public 
    class ObjectObject
        {
            public var valueObject:ValueObject;
            public var objectObject:ObjectObject;
            
            public function ObjectObject()
            {
            }
        }
    }
    代码
    package
    {
        
    import mx.collections.ArrayCollection;

        public 
    class ArrayObject
        {
            public var arrayValue:Array;
            public var collectionValue:ArrayCollection;
            public function ArrayObject()
            {
            }
        }
    }

    接收情况分析:

    1. 由于接收方使用了amf,默认带了压缩,所以flash传输的基本类型、binary类型、array类型无法解析,只能接收object

    2. 接收端使用java,newInstance()必须是public 单独的 pojo类,不能嵌入其他的类

    3. java pojo除了field是public之外,还必须有getset,否则beanmap无法找到对应的property 

    4. ArrayCollection -> java:ArrayCollection

    5. ByteArray -> byte[]

    6. Array -> object[] 

    7. 由于java不支持泛型的参数获取类型,所以collection无法实现。

    8. ArrayList.ToArray() = object[] , 无法转化为特定的 xxx[],导致了 反序列化的时候丢失了类的信息,无法实现Array的映射为java对象。

    9. flash接收对象使用ByteArray.readObject, 之前调用registerAlias,让flash实现强转型。

    http://www.adobe.us/livedocs/flex/3_cn/langref/flash/net/package.html#registerClassAlias() 

    10. java用amf接收,会出现粘包的问题。

    http://bbs.9ria.com/viewthread.php?tid=45637

    http://bbs.9ria.com/viewthread.php?action=printable&tid=46012 

    testcase:

    serialize-------------- 

    1. valueobject  - pass

    2. objectobject - pass 

    3. arrayobject- pass 

    deserialize --------------

    1. valueobject- pass 

    2. objectobject- pass 

    3. arrayobject- pass 

  • 相关阅读:
    关于ArcGIS Server VS2010无法显示发布的地图服务
    NDK,动态链接库,JNI
    android开发中一些报错的解决方法
    查询死锁对象
    pb导入excel文件
    n_cst_ping在powerbuilder 11 中的变化,一面的程序可正常ping
    SQL拼音
    数据库优化
    android调用asp.net webservice,返回json结构
    iframe内部需要弹出浮层问题
  • 原文地址:https://www.cnblogs.com/zc22/p/1762146.html
Copyright © 2011-2022 走看看