Всегда ли безопасно добавлять поля в конце Java-класса при использовании Protimestuff по умолчанию RuntimeSchema?

Я использую Protostuff RuntimeSchema самым простым способом:

Schema<Bean> schema = RuntimeSchema.createFrom(Bean.class);

Я буду сохранять результат byte[] где-нибудь и десериализовать его в будущем.

Но есть вероятность, что я добавлю некоторые поля в Bean.class (а также сгенерирую новую схему).

Я проверял несколько раз, он работает нормально, я могу получить новые поля как ноль.

Но я хочу убедиться, что это всегда безопасно, при условии, что новые поля всегда добавляются в конце Bean, и всегда использовать HotSpot JDK.

1 ответ

Решение

Да, если вы добавите поле в конец списка полей, это безопасно. RuntimeSchema присваивает теги полям в соответствии с их порядком в классе.

Однако, если вы используете наследование, все может стать немного сложнее. В этом случае вы должны рассмотреть возможность использования @Tag аннотаций.

Другие вопросы по тегам