使用 Protostuff 默认 RuntimeSchema 时,在 java class 末尾添加字段是否总是安全的?
Is adding fields at the end of a java class always safe when using Protostuff default RuntimeSchema?
我以最基本的方式使用 Protostuff RuntimeSchema :
Schema<Bean> schema = RuntimeSchema.createFrom(Bean.class);
我会把结果byte[]保存在某个地方,以后反序列化。
但有可能我会在 Bean.class 中添加一些字段(并生成一个新模式)。
我测试了几次,它工作正常,我可以将新字段设置为空。
但是我想确定它是否总是安全的,假设总是在Bean的末尾添加新字段,并且总是使用HotSpot JDK.
是的,如果您将字段附加到字段列表的末尾,那是安全的。 RuntimeSchema
根据字段在 class 中的顺序将标签分配给字段。
但是,如果您使用继承,事情可能会变得有点棘手。在这种情况下,您应该考虑使用 @Tag
注释。
我以最基本的方式使用 Protostuff RuntimeSchema :
Schema<Bean> schema = RuntimeSchema.createFrom(Bean.class);
我会把结果byte[]保存在某个地方,以后反序列化。
但有可能我会在 Bean.class 中添加一些字段(并生成一个新模式)。
我测试了几次,它工作正常,我可以将新字段设置为空。
但是我想确定它是否总是安全的,假设总是在Bean的末尾添加新字段,并且总是使用HotSpot JDK.
是的,如果您将字段附加到字段列表的末尾,那是安全的。 RuntimeSchema
根据字段在 class 中的顺序将标签分配给字段。
但是,如果您使用继承,事情可能会变得有点棘手。在这种情况下,您应该考虑使用 @Tag
注释。