我正在比较的解组
private Long longVar
private boolean isLongSetterCalled;
private BigDecimal bigDecVar
private boolean isBigDecimalSetterCalled;
@XmlElement(nillable = true)
public Long getLongVar() {
return this.longVar;
}
public void setLongVar(final Long longVar) {
this.longVar = longVar;
this.longSetterCalled = true;
}
@XmlElement(nillable = true)
public BigDecimal getBigDecVar() {
return this.bigDecVar;
}
public void setBigDecVar(final BigDecimal bigDecVar) {
this.bigDecVar = bigDecVar;
this.bigDecimalSetterCalled = true;
}
给定这些输入:
1. empty tag
<longVar></longVar>
<bigDecVar></bigDecVar>
2. invalid input
<longVar>looooong</longVar>
<bigDecVar>biiiiiig</bigDecVar>
我正在观察是否调用了 setter。在输入 2. 无效值 - 不调用设置器。在输入 1 中。空标签 - longSetter 未被调用,bigDecimalSetter 被调用。为什么?
当然还有输入
3. nil
<longVar xsi:nil="true"></longVar>
<bigDecVar xsi:nil="true"></bigDecVar>
两个 setter 都被调用,这是我需要的。
所以,问题是:当调用 bigDecimalSetter 时,我无法判断原因是xsi:nil="true"
,还是标签的值无效(不是 BigDecimal)。有解决办法吗?