#java #avro
Вопрос:
У меня есть следующее в моей схеме Avro (user.avsc):
{ "name": "properties", "type": { "type": "array", "items": "long" }, "default": [] }
Я ожидал бы , что массив по умолчанию будет пустым массивом []
, но когда я запускаю свои тесты, по умолчанию null
он равен . Я использую сгенерированный Builder.build()
для создания экземпляра моего User
класса без установки этого поля (поэтому он будет использовать значение по умолчанию). Почему бы этому не быть по умолчанию []
?
Ответ №1:
Значения по умолчанию предназначены для десериализации, когда поле не существует, а не для сериализации
Как написано в спецификации
default
: Значение по умолчанию для этого поля, используемое только при чтении экземпляров, в которых отсутствует поле для целей эволюции схемы. Наличие значения по умолчанию не делает поле необязательным во время кодирования