通过外部化逆转计算

时间:2013-04-16 14:43:39

标签: java serialization reflection

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

所以,例如,假设我正在执行Mario程序,我们按下按钮。游戏的状态发生了变化,但我们不知道如何。我想扭转这种影响,这样我就可以回到过去并按下另一个按钮。我的计划是:

  • 将可能产生某些效果的所有游戏类外部化。存储所有非最终字段的值,包括静态值。
  • 使用extern写出所有游戏对象。
  • 进行更改。
  • 使用extern写出所有游戏对象(如果我们想稍后再回到此状态)
  • 再次阅读更改前的状态。

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

Mods - 我使用标记序列化,因为外化不是现有标记。希望没关系。

编辑 - 我不需要局部变量的值,也不需要堆栈或堆。这可能是后来的考虑因素 - 特别是在变化之间可能已被破坏的对象的存在/不存在。

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

1 个答案:

答案 0 :(得分:1)

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