我有一个 JRuby 类,其中包含一个 Java 对象的实例变量。您可能知道,JRuby 在序列化 Java 对象时有很多麻烦,因此我只想跳过该对象。
这怎么可能实现?
我有一个 JRuby 类,其中包含一个 Java 对象的实例变量。您可能知道,JRuby 在序列化 Java 对象时有很多麻烦,因此我只想跳过该对象。
这怎么可能实现?
您可能必须编写自己的自定义 Marshal 函数来排除 Java 实例变量。对于一个非常简单的示例,请参阅http://www.linuxtopia.org/online_books/programming_books/ruby_tutorial/Reflection_ObjectSpace_and_Distributed__Ruby_Custom_Serialization_Strategy.html
除了 Java 实例之外,您需要将代码更改为自定义 Marshal:没有要排除的通用功能,只需在类级别定义整个 marshal 方法。您可以使用反射来获取实例变量列表,删除不需要的变量并编组剩余的实例变量。没那么难,但不再是单行了。