如何在没有Reflection的情况下进行Java序列化?

Ste*_*ose 7 java reflection serialization lego-mindstorms lejos-nxj

我正在开发一款不支持Java反射的Lego Mindstorm NXT机器人.

出于某种原因(并行创建模拟器和实际的头脑风暴),我们希望使用Serialization来交换Java对象.

问题是序列化使用反射,这是思想上的JVM不支持的.

有任何想法吗?

在Zwong.de上找到了这个页面,但源代码已被删除.

Mic*_*rry 1

我相信Kryo支持可序列化对象的无反射实例化。快速浏览一下他们的主页似乎证实了这一点:

当无法使用 ReflectASM 或反射时,Kryo 可以配置为使用 InstantiatorStrategy 来处理类实例的创建。Objenesis 提供 StdInstantiatorStrategy,它使用 JVM 特定的 API 来创建类的实例,而无需调用任何构造函数。这适用于许多 JVM。

听起来您需要创建自己的 JVM InstantiatorStrategy,因为我不确定标准的 JVM 是否支持 NXT JVM - 不过值得一试!我自己没有尝试过,但听起来理论上应该是可能的。