用于表示Web服务中的货币值的Java类型是什么?

时间:2009-12-08 16:44:11

标签: java web-services types jaxb marshalling

我正在用Java创建一个Web服务,该服务将由外部应用程序使用,可能是用C#编写的。在我的Purchase bean中,我有一个Currency对象用于总成本。但是,这会导致以下错误:

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.util.Currency does not have a no-arg default constructor.

我发现a solution创建了一个自定义XML适配器来处理货币编组/解组:

public class CurrencyAdapter extends XmlAdapter<String,Currency> {
  public Currency unmarshal(String val) throws Exception {
    return Currency.getInstance(val);
  }
  public String marshal(Currency val) throws Exception {
    return val.toString();
  }
}

我可以使用该自定义XML适配器,还是使用BigDecimal(或其他类型)对象来表示成本?

1 个答案:

答案 0 :(得分:4)

您正在混合货币(指定单位)和成本(该单位中的某个数量)。您不能将货币表示为BigInteger,因为货币不是数量。