Всегда ли безопасно добавлять поля в конце Java-класса при использовании Protimestuff по умолчанию RuntimeSchema?
Я использую Protostuff RuntimeSchema самым простым способом:
Schema<Bean> schema = RuntimeSchema.createFrom(Bean.class);
Я буду сохранять результат byte[] где-нибудь и десериализовать его в будущем.
Но есть вероятность, что я добавлю некоторые поля в Bean.class (а также сгенерирую новую схему).
Я проверял несколько раз, он работает нормально, я могу получить новые поля как ноль.
Но я хочу убедиться, что это всегда безопасно, при условии, что новые поля всегда добавляются в конце Bean, и всегда использовать HotSpot JDK.
1 ответ
Да, если вы добавите поле в конец списка полей, это безопасно. RuntimeSchema
присваивает теги полям в соответствии с их порядком в классе.
Однако, если вы используете наследование, все может стать немного сложнее. В этом случае вы должны рассмотреть возможность использования @Tag
аннотаций.