簡體   English   中英

生成的Avro Builder設置為null不會被默認覆蓋

[英]Generated Avro Builder set null doesn't overwrite with default

在我的Avro模式中,我定義了一個像這樣的字段

{
  "name": "myfield",
  "type": "string",
  "default": ""
}

當我在Java中構建avro對象時,我將myfield設置為null (我的代碼只是將值從一個位置復制到另一個位置)

MyObject myObject = MyObject.newBuilder().setMyfield(null).build();

我最終

myObject.getMyfield() == null

這是預期的行為嗎? 難道我做錯了什么? 我期望我們最終會得到默認值""

因為當我嘗試序列化對象(用於發送到kafka)時, null不是該字段的有效值

Builder上調用setter之前,我是否需要對此字段進行空檢查?

我通過允許null解決這個問題。 無論如何,最好將其默認設置為null (無意義),而不是"" (具有某種意義)。

{
  "name": "myfield",
  "type": [
    "null",
    "string"
  ],
  "default": null
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM