如何以编程方式判断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元素生成为一个字符串,并检查它是否是一个以/>结尾的标签,但这似乎就像是用大象追赶蚱hopper(换句话说,就是过分杀戮)。

在某个地方周围有方便的实用程序功能吗?

提前致谢。

最佳答案

鉴于已经生成了equals()方法(请参见下面的注释),您可以将JAXB元素与相同元素类型的new实例进行比较。

MyRequest EMPTY_MYREQYEST = new MyRequest();

if (myRequest.equals(EMPTY_MYREQUEST)) { ... }


我看不到这种方法有什么缺点(?)

注意:从xsd生成Java代码时,最可能需要-Xequals-XhashCode标志

08-03 17:08