创建对象快照

时间:2014-07-14 18:06:04

标签: dart dart-pub object-serialization

我正在修补transformers + "analyzer" pub packages,我想建立一个2级变压器。

阶段是:

  1. 为每个dart源文件构建AST
  2. 从第一阶段输出生成新来源(包含所有AST的信息)。
  3. 我需要将AST从一个阶段传递到另一个阶段而不需要昂贵的序列化/反序列化,但Assetdocs)不能从类实例构建。

    是否可以构建类实例快照并将其传递到下一阶段?

    这就是我到目前为止所发现的:

    From "Snapshots in Dart" article

      

    Dart VM使用以下类型的快照:
      ...
      对象快照。通过创建需要发送到另一个隔离的Dart对象的快照,在Dart VM中实现从一个隔离到另一个隔离的消息传递。

    API docs for dart:isolate

      

    在特殊情况下,两个隔离区共享相同的代码和   它在同一个进程中运行(例如通过spawn创建的隔离区)   也可以发送对象实例(将被复制)   过程)。

    如果“对象快照”具有相同的限制,那么它无法帮助我。

    但是,有趣的是,应该可以通过循环生成对象来创建对象的“深层复制”(克隆)。

    Issue 6459: clone instance(object) @lrn指出:

      

    我们通常不希望创建一个不会出现的对象   通过班级的生成构造者。你可以阅读Joshua的内容   Bloch谈到了Java中的克隆:   http://www.artima.com/intv/bloch13.html即使有这方面的经验   记住,我们或许可以避免界面问题,但我们不能   通常决定深层或浅层副本是否正确   去做。只有对象本身才知道。

    所以即使可能,也不建议这样做。

0 个答案:

没有答案