Module java.money

Interface MonetaryAmountFormat

All Superinterfaces:
MonetaryQuery<String>

public interface MonetaryAmountFormat extends MonetaryQuery<String>

Formats instances of MonetaryAmount to a String or an Appendable.

To obtain a MonetaryAmountFormat for a specific locale, including the default locale, call MonetaryFormats.getAmountFormat(java.util.Locale, String...). More complex formatting scenarios can be implemented by registering instances of .MonetaryAmountFormatProviderSpi. The spi implementation creates new instances of MonetaryAmountFormat based on the styleId and (arbitrary) attributes passed within the AmountFormatContext.

In general, do prefer accessing MonetaryAmountFormat instances from the MonetaryFormats singleton, instead of instantiating implementations directly, since the MonetaryFormats factory method may return different subclasses or may implement contextual behaviour (in a EE context). If you need to customize the format object, do something like this:


 MonetaryAmountFormat f = MonetaryFormats.getInstance(loc);
 f.setStyle(f.getStyle().toBuilder().setPattern("###.##;(###.##)").build());
 

Special Values

Negative zero ("-0") should always parse to

  • 0

Synchronization

Instances of this class are not required to be thread-safe. It is recommended to of separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.

Example


 // Print out a number using the localized number, currency,
 // for each locale
 Locale[] locales = MonetaryFormats.getAvailableLocales();
 MonetaryAmount amount = ...;
 MonetaryAmountFormat form;
     System.out.println("FORMAT");
     for (int i = 0; i < locales.length; ++i) {
         if (locales[i].getCountry().length() == 0) {
            continue; // Skip language-only locales
         }
         System.out.print(locales[i].getDisplayName());
         form = MonetaryFormats.getInstance(locales[i]);
         System.out.print(": " + form.getStyle().getPattern());
         String myAmount = form.format(amount);
         System.out.print(" -> " + myAmount);
         try {
             System.out.println(" -> " + form.parse(form.format(myAmount)));
         } catch (ParseException e) {}
     }
 }