Serialization groovy中闭包的序列化

Serialization groovy中闭包的序列化,serialization,groovy,closures,Serialization,Groovy,Closures,我正在用Groovy开发一个游戏,我正在考虑广泛使用闭包来使体系结构更干净。 例如,要实现状态效果(例如中毒),玩家对象将有一个闭包列表,以执行每个游戏回合。保存游戏时,必须序列化这些内容 在需要序列化的对象中存储闭包通常是一个好主意吗?或者我应该选择更传统的体系结构(例如,存储StatusEffect对象列表)?有一个闭包列表来执行每个游戏回合听起来是个不错的主意:-) 序列化闭包是完全可能的。自Groovy 1.8.5以来,作为这两种方法,它变得更加简单,并被添加到闭包中(以便在序列化之前可

我正在用Groovy开发一个游戏,我正在考虑广泛使用闭包来使体系结构更干净。 例如,要实现状态效果(例如中毒),玩家对象将有一个闭包列表,以执行每个游戏回合。保存游戏时,必须序列化这些内容


在需要序列化的对象中存储闭包通常是一个好主意吗?或者我应该选择更传统的体系结构(例如,存储StatusEffect对象列表)?

有一个闭包列表来执行每个游戏回合听起来是个不错的主意:-)

序列化闭包是完全可能的。自Groovy 1.8.5以来,作为这两种方法,它变得更加简单,并被添加到闭包中(以便在序列化之前可以剥离
所有者
此对象
委托

但是我对保存数据的原生java序列化有问题。对于在系统之间发送短期数据来说,这是一个很好的选择(但即使这样,我也会考虑or)

考虑一下如果你需要更新你的游戏会发生什么?如果
中毒
影响中存在错误,则在保存文件中使用错误中毒闭包保存的每个用户都将保留该错误,直到其消失。在多人游戏中,人们还可以操纵其保存的游戏文件,以赋予自己意外或不需要的权限(因为权限本身的功能将存储在文件中)。我可以看到操纵一个毒药效果,使其增加HP而不是移除HP可能是有益的;-)


简而言之,我想我要说的是,我会写一个字符表,其中包含影响用户、库存、分数等的ID,然后在读取文件时检查并应用闭包。

谢谢。我摆弄了Java反编译器,看看Groovy是如何在内部实现闭包的,现在看到序列化闭包并没有什么错。它们只是使用doCall方法自动生成的类,并存储对闭包中使用的所有外部变量的引用。唯一的问题是,即使未使用,它们也始终带有对该的引用,但正如您所说,自1.8.5版以来,有一种变通方法可用