java - 通过外部化进行逆向计算

标签 java serialization reflection

我有一种明显的感觉,我再次超出了我的头脑。几个月前,我构建了一个系统,可以搜索代码并使用反射进行修改。这工作得很好,现在我正在尝试重建系统并概括它的某些方面。我想做的一件事是不知道最近的计算中可能发生的变化。

例如,假设我正在执行一个 Mario 程序,并且我们按下了一个按钮。游戏的状态已经改变,但我们不知道如何改变。我想扭转这种效果,这样我就可以回到过去并按下不同的按钮。我的计划是:

  • 外部化所有可能对其产生某种影响的游戏类。存储所有非最终字段的值,包括静态值。
  • 使用 extern 写出所有游戏对象。
  • 做出改变。
  • 使用 extern 写出所有游戏对象(以防我们稍后想跳回此状态)
  • 再次读取更改前的状态。

从表面上看,有什么东西会在我脸上爆炸吗?这是个好主意吗?或者一些静态场/奇怪的行为会让我感到困惑吗?对于外部化,我实际上计划通过反射请求所有字段的列表,并按迭代顺序写出它们,以免错过任何内容。

Mods - 我使用标签序列化,因为外部化不是现有标签。希望没问题。

编辑 - 我还不需要局部变量的值,或者堆栈或堆。不过,这可能是稍后考虑的问题 - 特别是在更改之间可能已被破坏的对象的存在/不存在。

本质上,我需要反转一般的计算步骤。不知道这是否可能。

最佳答案

可能是我误读了你的问题,但在我看来,你正在寻找的是 Aspect Oriented Programming .
如果您已经使用 Spring 您可以使用它。不要尝试重新发明轮子

关于java - 通过外部化进行逆向计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16040068/

相关文章:

java - JOOQ 按问题排序

带有空字符串和子字符串的 Java 序列化

ruby - 获取有关 Crystal 中继承链的信息

Java 对辅助类字段的反射

java - 在没有公共(public)接口(interface)的情况下调用公共(public)方法

java - 如何让 Java 使用 Scanner 读取非常大的文件?

java - 对象类中的静态列表

java - 关于多线程访问和编辑全局字段

不同 JVM 版本的 java 序列化

c# - 使用 JSON.NET 反序列化一些 JSON