如果没有指定ExchangeRateProvider的话返回的是CompoundRateProvider。CompoundRateProvider会将汇率转换请求委派给一个ExchangeRateProvider链并将第一个返回准确结果的提供商的数据返回。
  // get the exchange rate from euro to us dollar
  ExchangeRate rate = exchangeRateProvider.getExchangeRate("EUR", "USD");
  NumberValue factor = rate.getFactor(); // 1.2537 (at time writing)
  CurrencyUnit baseCurrency = rate.getBaseCurrency(); // EUR
  CurrencyUnit targetCurrency = rate.getCurrency(); // USD
  货币转换
  不同货币间的转换可以通过ExchangeRateProvider返回的CurrencyConversions来完成。
  // get the CurrencyConversion from the default provider chain
  CurrencyConversion dollarConversion = MonetaryConversions.getConversion("USD");
  // get the CurrencyConversion from a specific provider
  CurrencyConversion ecbDollarConversion = ecbExchangeRateProvider.getCurrencyConversion("USD");
  MonetaryAmount tenEuro = Money.of(10, "EUR");
  // convert 10 euro to us dollar
  MonetaryAmount inDollar = tenEuro.with(dollarConversion); // "USD 12.537" (at the time writing)
  请注意CurrencyConversion也实现了MonetaryOperator接口。正如其它操作一样,它也能通过MonetaryAmount.with()方法来调用。
  格式化及解析
  MonetaryAmount可以通过MonetaryAmountFormat来与字符串进行解析/格式化。
  // formatting by locale specific formats
  MonetaryAmountFormat germanFormat = MonetaryFormats.getAmountFormat(Locale.GERMANY);
  MonetaryAmountFormat usFormat = MonetaryFormats.getAmountFormat(Locale.CANADA);
  MonetaryAmount amount = Money.of(12345.67, "USD");
  String usFormatted = usFormat.format(amount); // "USD12,345.67"
  String germanFormatted = germanFormat.format(amount); // 12.345,67 USD
  // A MonetaryAmountFormat can also be used to parse MonetaryAmounts from strings
  MonetaryAmount parsed = germanFormat.parse("12,4 USD");
  可以通过AmountFormatQueryBuilder来生成自定义的格式。
  // Creating a custom MonetaryAmountFormat
  MonetaryAmountFormat customFormat = MonetaryFormats.getAmountFormat(
  AmountFormatQueryBuilder.of(Locale.US)
  .set(CurrencyStyle.NAME)
  .set("pattern", "00,00,00,00.00 ¤")
  .build());
  // results in "00,01,23,45.67 US Dollar"
  String formatted = customFormat.format(amount);
  注意,这里的¤符号在模式串中是作为货币的占位符。
  总结
  新的货币API这里已经介绍得差不多了。并且目前它的实现也已经相对稳定了(但还需要多补充些文档)。期待能在Java 9中看到这套新的接口!