Currency updates in JDK 7
Stephen Colebourne
scolebourne at joda.org
Sat Aug 22 22:09:39 UTC 2009
I've been reviewing the Javadoc for the JDK 7 Currency class changes.
http://download.java.net/jdk7/docs/api/java/util/Currency.html
The updates appear to allow users the ability to override the built in
currency data, as indicated in the class javadoc:
"Users can supersede the Java runtime currency data by creating a
properties file named <JAVA_HOME>/lib/currency.properties. The contents
of the properties file are key/value pairs of the ISO 3166 country codes
and the ISO 4217 currency data respectively. The value part consists of
three ISO 4217 values of a currency, i.e., an alphabetic code, a numeric
code, and a minor unit. Those three ISO 4217 values are separated by
commas. The lines which start with '#'s are considered comment lines.
For example,
#Sample currency properties
JP=JPZ,999,0
will supersede the currency data for Japan. "
Unfortunately, not all currencies are associated with countries. Some,
like XAG for 'silver', XDR for 'IMF drawing rights' or XXX for 'no
currency' have no matching country. Thus, this file format is unable to
represent user overrides to those countries.
Further, the Javadoc is unclear as to whether users can _add_ new
currencies. An example would be if a country split, like Czech/Slovak,
and created two currencies. Does the new format add a currency to the
built in list if it isn't recognised?
I believe that we should also consider if Currency should implement
Comparable, sorting alphabetically on the currency code. While there are
many possible sort orders, having this as the default one makes a lot of
sense.
Finally, I'd like to see a method isPsuedoCurrency() added. This would
return a boolean indicating if the currency is 'real' or not.
Otherwise the changes pretty much complete the use cases for the class.
Stephen
More information about the core-libs-dev
mailing list