我有一个数据模型,以XSD文件的形式存在,然后我使用命令行从中生成相应的Java文件。使用
xjc
从XSD生成JAXB类时,会为List
类型元素生成getter方法(但没有对应的setter方法),如下所示:public List<Type> getElement3() {
if (element3 == null) {
element3 = new ArrayList<Type>();
}
return this.element3;
}
我在XSD生成的几乎每个文件中都有很多List
类型字段。
应用场景:
现在,我不希望生成带有null
检查的getter。我的应用代码中存在逻辑,调用每个字段的getter时经常导致它们被初始化为空List
。
然后,在进行编组时,我必须停止传递空列表以避免发送过多的空列表。
PS:我有一个使用案例,用户明确设置了空列表
,服务器必须在后端删除某些项目。因此,区分值是由用户显式设置还是仅因访问字段时调用了List
的getter而设置的很重要。
那么,如何使JAXB生成一个没有null
检查的getter呢?
由于编辑编译后生成的java文件将是繁琐的,因为它存在于很多文件中,并且我们的XSD版本会得到更新,每次出现新版本时都必须进行编辑。
List
元素。因此,为每个类编写一个包装器将会很麻烦。 - Siddharth TrikhaId
字段设置为私有的插件(或其他内容)。在你的实现中,你应该检测何时使用了列表并避免进行空值检查和初始化。 - Victor]
。 - Siddharth Trikha