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 

  • 相关阅读:
    初识java反射机制
    基本数据类型-保装类型-string三种数据类型的转换
    java 正则表达式
    java 异常
    java 初识String
    java 接口
    java抽象
    初识多态 简单理解
    初来驾到学JAVA继承初识
    转载:Gearman php
  • 原文地址:https://www.cnblogs.com/zc22/p/1762146.html
Copyright © 2011-2022 走看看