如何以编程方式判断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
标志