用XMLEncode輸出時(shí)候,有BigDecimal有時(shí)候不好使。
Posted on 2008-03-28 10:07 oathleo 閱讀(548) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Java用XMLEncode輸出時(shí)候,如果有BigDecimal有時(shí)候不好使。
原因是:如果類(lèi)的變量在定義時(shí)候有初始值,而不是null,就必須要重載DefaultPersistenceDelegate的mutatesTo方法。
關(guān)于這個(gè)說(shuō)明,在網(wǎng)上這里可以看到:
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
????????? };
網(wǎng)上的牛人說(shuō):
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);
}