用XMLEncode輸出時候,如果有BigDecimal有時候不好使。
原因是:如果類的變量在定義時候有初始值,而不是null,就必須要重載DefaultPersistenceDelegate的mutatesTo方法。
關于這個說明,在網上這里可以看到:
http://forum.java.sun.com/thread.jspa?threadID=631299&messageID=3642493
有興趣的可以看看:
//setup big decimal delegate.
????????? DefaultPersistenceDelegate bigDecimalDelegate = new DefaultPersistenceDelegate() {
????????????? protected Expression instantiate(Object oldInstance, Encoder out) {
????????????????? BigDecimal decimal = (BigDecimal) oldInstance;
????????????????? return new Expression(oldInstance, oldInstance.getClass(), "new", new Object[] {decimal.toString()});
????????????? }
????????????? //must override this method.
????????????? // see http://forum.java.sun.com/thread.jspa?threadID=631299&messageID=3642493
????????????? protected boolean mutatesTo(Object oldInstance, Object newInstance) {
????????????????? return oldInstance.equals(newInstance);
????????????? }
????????????? //--- Joshua
????????? };
網上的牛人說:
This works for BigDecimal properties that aren't initialized, i.e.
null. But if you initialize the property, then this won't work unless
you override mutatesTo in addition to instantiate mentioned above:
protected boolean mutatesTo(Object oldInstance, Object newInstance) {
return oldInstance.equals(newInstance);
}