在我的Java App中使用https://immutables.github.io
我的不可变POJO:
@Value.Immutable
public interface AdditionalInfo {
@Nullable
@Value.Default
default String getCountry() {
return "US";
}
}
我创建POJO的代码
ImmutableAdditionalInfo.builder().country(countryVar).build()
如果countryVar为null,则getCountry将返回null。这对我来说似乎有点直观,对我来说,如果没有设置值,最好使用它。 我可以在创建AdditionalInfo的应用程序代码中进行空检查,但这似乎不是最佳的。
if (countryVar != null) {
ImmutableAdditionalInfo.builder().country(countryVar).build()
} else {
ImmutableAdditionalInfo.builder().build()
}
构建器生成的代码是:
this.country = builder.countryIsSet() ? builder.country : AdditionalTaxLineInfo.super.getCountry();
而我想要的是:
this.country = builder.countryIsSet() && builder.country != null ? builder.country : AdditionalTaxLineInfo.super.getCountry();
谢谢!
答案 0 :(得分:2)
此处提出类似问题:https://github.com/immutables/immutables/issues/294
解决方案:
"CORRECT_STRING 1 abcd"
"field"
"part"
"CORRECT_STRING 100 xvfgfjskk"
"behind"
"CORRECT_STRING 4 afdgdg"
"CORRECT_STRING 9 ahj"
"CORRECT_STRING 12 gsgkkd"
"extract"
"CORRECT_STRING 108 hfjfj"
"CORRECT_STRING 21 y"
答案 1 :(得分:1)
您需要使用Nullable attributes。
类似的东西:
@Value.Immutable
public interface AdditionalInfo {
@Nullable
@Value.Default
default String getCountry() {
return "US";
}
}