如何在 GWT 中深度复制任意对象?

2024-01-26

我有一个标记为可序列化的任意对象。它有各种可变的子对象,表示货币金额、集合等。我希望能够克隆这个对象,这样如果用户修改它然后恢复他们的操作,我可以用新的克隆替换该克隆。

这意味着我需要深层复制,因为我不希望用户对原始对象上出现的子对象进行更改(例如,从集合中添加/插入项目)。

这些对象没有实现 Cloneable,因为它们是自动生成的,所以我也无法添加这样的方法。

除了痛苦地手写深度克隆之外,还有什么办法可以在 GWT 中完成同样的任务吗?如果这是 Java,我可以考虑将对象序列化为字节数组流并反序列化一个新副本。

我在 GWT 中无法做到这一点。我可能可以利用 RPC,因为对象稍后会发送到 servlet。我只是不知道这是否容易做到。

有人知道我可以进行深层复制的简单方法吗?


如果您有机会向域类添加接口或注释,您可以使用gwt-ent http://code.google.com/p/gwt-ent/对于反射,你可以通过反射的方式轻松编写自己的深拷贝语义。我已使用此技术来提高开发模式下的 gwt 序列化性能。

作为另一个解决方案,您可以使用 gwt 默认序列化机制进行深度复制,但不幸的是我不知道如何实现这个目标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 GWT 中深度复制任意对象? 的相关文章

随机推荐

  • .FillRectangle 不绘制任何内容

    我无法弄清楚为什么 FillRectangle 不适合我 此外 由于它没有抛出任何异常 我不知道为什么会这样 所以我在这里需要一些帮助 受影响的代码部分是这样的 try using FileStream fileStream File Op
  • 直接从 JavaScript 访问 GET?

    我想我可以使用 PHP 来访问 GET来自 JavaScript 的变量 但也许它更简单 有没有办法直接用JS实现呢 Look at window location search 它将包含一个像这样的字符串 foo 1 bar 2 要将其转
  • 核心数据使用一次后<故障>

    我搜索了几个小时但没有找到任何东西 我处于有线状态核心数据 获取对象的方法 func fetchAllCoreData gt NSArray let moc DataController managedObjectContext let f
  • 如何在android中的gridview适配器的getView()内膨胀另一个布局?

    I want to create weekly calendar view and inside each grid item each day there are may be several activities Out of this
  • 关闭时控制台关闭过程[重复]

    这个问题在这里已经有答案了 我将一个DLL注入到一个进程中 在该进程的入口点我生成一个新线程并分配一个控制台 我将所有std重定向到控制台 当我关闭控制台窗口时整个进程关闭 有没有办法这样它就不会关闭进程 这是我的代码 入口点 pragma
  • 如何识别用户何时开始和停止在 android 中说话? (Android 中的语音识别)

    我已经进行了大量的研发并使用了大量的资源来解决我的问题 但我未能找到任何适当的解决方案 我已经开发了一个应用程序 现在我想添加基于语音的功能 to it 所需的功能是 1 when USER开始说话 应该录制音频 视频 and 2 当用户停
  • StreamSubscription.cancel 与 StreamController.close 在内存泄漏方面的比较

    是否打电话StreamController close自动取消StreamSubscription并删除所有引用 我认为这是有道理的 但我无法在文档中找到它来确定 我有以下代码 dispose context bloc blocSubscr
  • Netsuite Suitescript可以修改文件柜中的文件吗?

    我有一个很大的产品列表 需要生成它的静态文件 并让该文件可以在我的网站中访问 目前 我生成列表 并将其上传到文件柜 我希望自动化这个过程 我想安排一个 SuiteScript 每晚运行并生成此列表并更新文件柜中的文件 这可以做到吗 than
  • HTTP 直播 MPEG TS 段

    我使用 FFMPEG 和免费分段器 Carson Mcdonald s 来生成我的 ts 片段 然后将其保存到网络服务器并通过播放 m3u8 来使用 Quicktime 进行播放 如果我有段 1 2 3 4 和另一个包含段 1 2 3 4
  • 解释一下莫名其妙的死锁

    首先 我不明白我怎么能得到any根本没有死锁 因为我没有使用显式锁定 所以只涉及一个表 每个进程都有一个单独的进程来插入 选择和更新行 一次只插入或更新一行 并且每个进程很少 也许一分钟一次 完全运行 这是一个电子邮件队列 CREATE T
  • 从 Visual Studio 在 Linux docker 容器中调试 nunit 测试

    我正在尝试更改我们的 NET Core 3 0 应用程序以在 Linux 容器中运行 我已经到了可以在容器内恢复和构建的地步 但测试失败了 这是预期的 该应用程序中的某些内容仅适用于 Windows 计算机 我想从 Windows 上的 V
  • 配置 Play 1.x/JPA 以顺序生成实体 ID?

    强制 Play JPA 使实体 ID 连续的最佳方法是什么 他们不是 https stackoverflow com questions 9771532 are jpa ids sequential 一种想法是将 play db jpa M
  • 谁能告诉我当我尝试添加syncfusion_flutter_pdfviewer包时flutter中的这个错误是什么

    当我在 yaml 文件中添加syncfusion flutter pdfviewer 包时 出现以下错误 谁能告诉我那个错误状态是什么 C src flutter pub cache hosted pub dartlang org sync
  • 如何在Docker中使用“绑定挂载”

    运行此命令后 我在日志中收到错误 docker run d p 3000 80 name Feedback app v 反馈 app feedback v WorkSpace d data volumes 03 adj node code
  • 如何在Linux命令行中运行jar文件

    如何将类路径设置为当前目录并运行名为的 jar 文件load jar通过提供参数作为当前目录中的内容load 2从 Linux 命令行 我确实尝试按如下方式运行该 jar 但它从其他目录执行类 java cp load jar CLASSP
  • 通过多线程访问文件

    我想通过10个线程访问一个大文件 文件大小可能从30MB到1GB不等 然后通过10个线程处理文件中的每一行并将它们写入另一个文件 如果我只使用一个线程访问IO 其他线程就会被阻塞 该处理花费的时间几乎相当于从文件系统读取一行代码 还有一个限
  • Python 如何实现其类型对象,即类型类型始终是类型?

    我知道Python中的所有东西都是一个对象 并且这些对象的 类型 或类 是 类型 另外 类型的类型也是类型本身 正如解释得很好here http www cafepy com article python types and objects
  • Whatsapp://send?text 将字符串从“&”字符剪切到末尾? [复制]

    这个问题在这里已经有答案了 我正在尝试添加可在 WhatsApp 中共享的链接 例如 whatsapp send text http www example com products women dresses sessionid 3456
  • 为什么调用 DataTable().draw() 时 columns.render 不执行?

    我很困惑为什么列 渲染 https datatables net reference option columns render不包含在执行管道中数据表 draw https datatables net reference api dra
  • 如何在 GWT 中深度复制任意对象?

    我有一个标记为可序列化的任意对象 它有各种可变的子对象 表示货币金额 集合等 我希望能够克隆这个对象 这样如果用户修改它然后恢复他们的操作 我可以用新的克隆替换该克隆 这意味着我需要深层复制 因为我不希望用户对原始对象上出现的子对象进行更改