Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成的Avro生成器集null不';不要用默认值覆盖_Java_Avro - Fatal编程技术网

Java 生成的Avro生成器集null不';不要用默认值覆盖

Java 生成的Avro生成器集null不';不要用默认值覆盖,java,avro,Java,Avro,在我的avro模式中,我定义了这样一个字段 { "name": "myfield", "type": "string", "default": "" } 在java中构建avro对象时,我将myfield设置为null(我的代码只是将值从一个地方复制到另一个地方) 我最终得到了 myObject.getMyfield() == null 这是预期的行为吗?我做错什么了吗?我希望我们最终会得到默认值“” 因为当我尝试序列化对象(用于发送到kafka)时,null不是此字段的有效值

在我的avro模式中,我定义了这样一个字段

{
  "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
}