[英]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.