Java 生成的Avro生成器集null不';不要用默认值覆盖
在我的avro模式中,我定义了这样一个字段Java 生成的Avro生成器集null不';不要用默认值覆盖,java,avro,Java,Avro,在我的avro模式中,我定义了这样一个字段 { "name": "myfield", "type": "string", "default": "" } 在java中构建avro对象时,我将myfield设置为null(我的代码只是将值从一个地方复制到另一个地方) 我最终得到了 myObject.getMyfield() == null 这是预期的行为吗?我做错什么了吗?我希望我们最终会得到默认值“” 因为当我尝试序列化对象(用于发送到kafka)时,null不是此字段的有效值
{
"name": "myfield",
"type": "string",
"default": ""
}
在java中构建avro对象时,我将myfield
设置为null
(我的代码只是将值从一个地方复制到另一个地方)
我最终得到了
myObject.getMyfield() == null
这是预期的行为吗?我做错什么了吗?我希望我们最终会得到默认值“
”
因为当我尝试序列化对象(用于发送到kafka)时,null
不是此字段的有效值
在调用
Builder
上的setter之前,是否需要对该字段进行null检查?我通过允许null
s解决了这个问题。也许最好默认为null
(无意义)而不是”
(有一定意义)
我通过允许
null
s绕过了这个问题。也许最好默认为null
(无意义)而不是”
(有一定意义)
这看起来像是Avro中的一个bug。如果参数为
null
,setter应该抛出异常。这应该独立于模式中的默认值。这看起来像是Avro中的错误。如果参数为null
,setter应该抛出异常。这应该独立于模式中的默认值。
myObject.getMyfield() == null
{
"name": "myfield",
"type": [
"null",
"string"
],
"default": null
}