我们使用 Protostuff 的 RuntimeSchema 来序列化我们的数据。这主要是有效的,但我们有时会得到:
java.lang.StackOverflowError
at io.protostuff.runtime.ObjectSchema.mergeFrom(ObjectSchema.java:350) ~[protostuff-runtime-1.5.3.jar:1.5.3]
at io.protostuff.CodedInput.mergeObjectEncodedAsGroup(CodedInput.java:336) ~[protostuff-core-1.5.3.jar:1.5.3]
at io.protostuff.CodedInput.mergeObject(CodedInput.java:298) ~[protostuff-core-1.5.3.jar:1.5.3]
at io.protostuff.runtime.RuntimeUnsafeFieldFactory$15$1.mergeFrom(RuntimeUnsafeFieldFactory.java:1217) ~[protostuff-runtime-1.5.3.jar:1.5.3]
这显然意味着我们的对象内部有某种循环引用。
阅读文档 Protostuff 理论上确实支持运行时模式中的循环引用,是否需要启用配置才能使其正常工作?
我读过:Dprotostuff.runtime.collection_schema_on_repeated_fields
但它假设仅适用于数组项的循环引用,而我们的对象并非如此。
谢谢!