AS3 深度拷贝对象的构造函数带参数

     关于AS3的深度拷贝, 网站有不少的的文章介绍.  我在EncryptZip项目中也用到了, 由于ZipEntry 有自己的构造函数, 在copier.readObject()处得到了参数个数不匹配错误(ArgumentError: Error #1063),  所以查找了相关资料, 然而最终也没有找到一个好的解决方案.  

    资料显示:如果不使用registerClassAlias注册类的别名, 会丢失对象的类型信息, 在类型转换时候会有强制类型错误(TypeError: Error #1034:).  

     无奈只好用了一个折衷的方法:

 1. 注释registerClassAlias, 增加fill方法. (丢失类型信息, 返回Object对象)

 

      

          完整代码  Refer  to: http://code.google.com/p/encrypt-zip-as3-java/source/browse/trunk/EncryptZip/flex_src/com/universalmind/cairngorm/vo/ValueObject.as 

 

 2. 在ZipEntry里override了clone方法, (使用Object的属性name, 实例化ZipEntry, 赋值并返回ZipEntry对象)

      

    完整代码  Refer  to: http://code.google.com/p/encrypt-zip-as3-java/source/browse/trunk/EncryptZip/flex_src/nochump/util/zip/ZipEntry.as

 

3. 补充:

    实现的方式类似copyFrom(src:*):*, 但不同.  在Java中用二进制流的形式将对象深度拷贝成功, 那是因为Java每个对象都有默认的无参构造函数, 而AS3却不支持对象有多个构造函数.

 

(转贴注明出处)

 

Author:David

    Mail:xiang.okay@gmail.com

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值