我目前使用Immutable库来从我的web应用程序中生成JSON对象。为什么不可变的null不鼓励?
在this章来看,第一行说:
使用可空的属性是不鼓励。
所以我的问题是:
1)为什么?空对象有什么问题?
2)我使用的是什么,如果thirdy对象的包装,我不知道,如果项目为空或不是,所以使用分级生成器生成代码将失败:
MyImmutableWrapperObject
.builder().
.mobile(input.getMobile()) // don't know if null or not
.build();
有什么最佳解?
编辑:
@JsonProperty("mobile")
public abstract Optional<String> mobile();
...
// composing builder
if (input.getMobile() != null)
builder.mobile(input.getMobile());
产生的JSON是:
"mobile": {
"present": false
},
我如何能彻底清除空字段?
我读this,但它使用gson.toJson返回一个String对象,这不是我的理想方式。
POSTEDIT:
我刚刚发现,即使目前可选没有显示出真正的价值,但它只是显示真/假值,所以我并不需要它。
因此,一个不可能性的方式可能是也: 生成器builder = ImmutableAccount \t \t \t \t \t .builder() if(input.getMobile()!= null)builder.mobile(input.getMobile()); return builder.build() –
@FabrizioStellato它可能是 - 是的。在这种情况下,存储'Optional.empty()'可能是正确的。或者甚至建设者用这个null来做一些事情 - 这取决于。 – Eugene
查看我编辑的问题 –