如何以编程方式告诉JAXB元素是否为空?" ?
<fis:MyRequest/>
通常情况下,对于数据,它可能如下所示:
<fis:MyRequest>
<fis:ABC>X</fis:ABC>
<fis:XYZ>6000</fis:XYZ>
</fis:MyRequest>
但有时它可能是空的,我想在代码中隔离这些情况。
在这种情况下,很容易检查
if (myRequest.getAbc() == null && myRequest.getXyz() == null) { ... }
但是想象一下,如果有更多的子元素,这将是不切实际的。
我考虑过将myRequest元素生成为一个字符串,然后检查它是否是一个以/>
结尾的单个标签,但这似乎是用大象追逐一只蚱蜢(换句话说,过度杀戮)。
是否有一个方便的实用功能坐在某个地方这样做?
提前致谢。
答案 0 :(得分:1)
鉴于已生成equals()
方法(请参阅下面的注释),您可以将JAXB元素与相同元素类型的new
实例进行比较。
MyRequest EMPTY_MYREQYEST = new MyRequest();
if (myRequest.equals(EMPTY_MYREQUEST)) { ... }
我认为这种方法没有任何不利之处(?)
注意:从xsd生成java代码时,最有可能需要-Xequals
和-XhashCode
标志