< prev index next >
src/java.base/share/classes/java/util/Locale.java
Print this page
*** 598,607 ****
--- 598,635 ----
/** serialization ID
*/
static final long serialVersionUID = 9149081749638150636L;
/**
+ * Enum for specifying the type defined in ISO 3166. This enum is used to
+ * retrieve the two-letter ISO3166-1 alpha-2, three-letter ISO3166-1
+ * alpha-3, four-letter ISO3166-3 country codes.
+ *
+ * @see #getISOCountries(Locale.IsoCountryCode)
+ * @since 9
+ */
+ public static enum IsoCountryCode {
+ /**
+ * PART1_ALPHA2 is used to represent the ISO3166-1 alpha-2 two letter
+ * country codes.
+ */
+ PART1_ALPHA2,
+
+ /**
+ *
+ * PART1_ALPHA3 is used to represent the ISO3166-1 alpha-3 three letter
+ * country codes.
+ */
+ PART1_ALPHA3,
+
+ /**
+ * PART3 is used to represent the ISO3166-3 four letter country codes.
+ */
+ PART3;
+ }
+
+ /**
* Display types for retrieving localized names from the name providers.
*/
private static final int DISPLAY_LANGUAGE = 0;
private static final int DISPLAY_COUNTRY = 1;
private static final int DISPLAY_VARIANT = 2;
*** 994,1009 ****
}
/**
* Returns a list of all 2-letter country codes defined in ISO 3166.
* Can be used to create Locales.
* <p>
* <b>Note:</b> The <code>Locale</code> class also supports other codes for
* country (region), such as 3-letter numeric UN M.49 area codes.
* Therefore, the list returned by this method does not contain ALL valid
* codes that can be used to create Locales.
! *
* @return An array of ISO 3166 two-letter country codes.
*/
public static String[] getISOCountries() {
if (isoCountries == null) {
isoCountries = getISO2Table(LocaleISOData.isoCountryTable);
--- 1022,1043 ----
}
/**
* Returns a list of all 2-letter country codes defined in ISO 3166.
* Can be used to create Locales.
+ * This method is equivalent to {@link #getISOCountries(Locale.IsoCountryCode type)}
+ * with {@code type} {@link IsoCountryCode#PART1_ALPHA2}.
* <p>
* <b>Note:</b> The <code>Locale</code> class also supports other codes for
* country (region), such as 3-letter numeric UN M.49 area codes.
* Therefore, the list returned by this method does not contain ALL valid
* codes that can be used to create Locales.
! * <p>
! * Note that this method does not return obsolete 2-letter country codes.
! * ISO3166-3 codes which designate country codes for those obsolete codes,
! * can be retrieved from {@link #getISOCountries(Locale.IsoCountryCode type)} with
! * {@code type} {@link IsoCountryCode#PART3}.
* @return An array of ISO 3166 two-letter country codes.
*/
public static String[] getISOCountries() {
if (isoCountries == null) {
isoCountries = getISO2Table(LocaleISOData.isoCountryTable);
*** 1012,1021 ****
--- 1046,1069 ----
System.arraycopy(isoCountries, 0, result, 0, isoCountries.length);
return result;
}
/**
+ * Returns a {@code Set} of ISO3166 country codes for the specified type.
+ *
+ * @param type {@link Locale.IsoCountryCode} specified ISO code type.
+ * @see java.util.Locale.IsoCountryCode
+ * @throws NullPointerException if type is null
+ * @return a {@code Set} of ISO country codes for the specified type.
+ * @since 9
+ */
+ public static Set<String> getISOCountries(IsoCountryCode type) {
+ Objects.requireNonNull(type);
+ return LocaleISOData.retrieveIsoCountryCodes(type);
+ }
+
+ /**
* Returns a list of all 2-letter language codes defined in ISO 639.
* Can be used to create Locales.
* <p>
* <b>Note:</b>
* <ul>
< prev index next >