Установить значение по умолчанию для полей не в XML в XStream
Есть ли способ создать конвертер или какую-либо операцию, которая выполняется после каждого отдельного преобразования? Для контекста я пытаюсь заполнить значения по умолчанию для полей, которых нет в моем XML, чтобы обеспечить обратную совместимость, если моя модель данных изменится. Например, если бы у меня был этот объект:
class A {
private String b;
private String c;
private String d;
}
и мой XML был что-то вроде:
<a>
<b>b</b>
<d>d</d>
</a>
Я хочу, чтобы мой импорт XML знал, что для поля есть значение по умолчаниюc
это"c"
и установите его наA
в качестве таких. Это должна быть общая операция, к которой я могу добавить значения по умолчанию для любого поля очень сложного графа. Если бы был какой-то способ вызывать функцию после каждого преобразования, он мог бы сравнить текущий объект с картой объектов, для которых я хотел бы установить значение по умолчанию.
Также обратите внимание, что использование readResolve / readObject не представляется возможным, поскольку 1. readObject () никогда не работал для меня вообще и 2. readResolve перезапишет поле значением по умолчанию, даже если оно действительно было включено в XML , Пожалуйста, дайте мне знать, если мои предположения здесь неверны.
Edit :: Я нашел эту связанную тему в списке рассылки пользователя:http://article.gmane.org/gmane.comp.java.xstream.user/4619/match=default+value
и кажется, что единственным предложенным решением является использованиеreadResolve()
который я уже сказал, не было верным решением.