17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 3f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * Copyright (C) 2004-2015, Google Inc, International Business Machines * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Corporation and others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.util; 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.Externalizable; 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.IOException; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.ObjectInput; 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.ObjectOutput; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.ObjectStreamException; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.Serializable; 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Collections; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Enumeration; 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.HashMap; 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.HashSet; 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Map; 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.MissingResourceException; 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Set; 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.impl.ICUResourceBundle; 24f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubertimport com.ibm.icu.impl.Pair; 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.UnicodeSet; 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * A unit such as length, mass, volume, currency, etc. A unit is 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * coupled with a numeric amount to produce a Measure. MeasureUnit objects are immutable. 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * All subclasses must guarantee that. (However, subclassing is discouraged.) 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @see com.ibm.icu.util.Measure 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @author Alan Liu 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 3.0 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class MeasureUnit implements Serializable { 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static final long serialVersionUID = -1839973855554750484L; 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Used to pre-fill the cache. These same constants appear in MeasureFormat too. 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static final String[] unitKeys = new String[]{"units", "unitsShort", "unitsNarrow"}; 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static final Map<String, Map<String,MeasureUnit>> cache 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert = new HashMap<String, Map<String,MeasureUnit>>(); 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert protected final String type; 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert protected final String subType; 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert protected MeasureUnit(String type, String subType) { 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.type = type; 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.subType = subType; 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Get the type, such as "length" 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 73f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String getType() { 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return type; 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Get the subType, such as “foot”. 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 83f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String getSubtype() { 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return subType; 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 92f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * {@inheritDoc} 93f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * 94f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int hashCode() { 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return 31 * type.hashCode() + subType.hashCode(); 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 102f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * {@inheritDoc} 103f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * 104f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public boolean equals(Object rhs) { 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (rhs == this) { 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return true; 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!(rhs instanceof MeasureUnit)) { 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return false; 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert MeasureUnit c = (MeasureUnit) rhs; 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return type.equals(c.type) && subType.equals(c.subType); 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 119f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * {@inheritDoc} 120f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * 121f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String toString() { 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return type + "-" + subType; 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Get all of the available units' types. Returned set is unmodifiable. 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 131f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public synchronized static Set<String> getAvailableTypes() { 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return Collections.unmodifiableSet(cache.keySet()); 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * For the given type, return the available units. 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param type the type 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @return the available units for type. Returned set is unmodifiable. 141f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public synchronized static Set<MeasureUnit> getAvailable(String type) { 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Map<String, MeasureUnit> units = cache.get(type); 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Train users not to modify returned set from the start giving us more 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // flexibility for implementation. 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return units == null ? Collections.<MeasureUnit>emptySet() 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert : Collections.unmodifiableSet(new HashSet<MeasureUnit>(units.values())); 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Get all of the available units. Returned set is unmodifiable. 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 154f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public synchronized static Set<MeasureUnit> getAvailable() { 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Set<MeasureUnit> result = new HashSet<MeasureUnit>(); 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (String type : new HashSet<String>(MeasureUnit.getAvailableTypes())) { 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (MeasureUnit unit : MeasureUnit.getAvailable(type)) { 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert result.add(unit); 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Train users not to modify returned set from the start giving us more 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // flexibility for implementation. 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return Collections.unmodifiableSet(result); 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Create a MeasureUnit instance (creates a singleton instance). 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * <p> 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Normally this method should not be used, since there will be no formatting data 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * available for it, and it may not be returned by getAvailable(). 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * However, for special purposes (such as CLDR tooling), it is available. 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static MeasureUnit internalGetInstance(String type, String subType) { 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (type == null || subType == null) { 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert throw new NullPointerException("Type and subType must be non-null"); 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!"currency".equals(type)) { 184bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (!ASCII.containsAll(type) || !ASCII_HYPHEN_DIGITS.containsAll(subType)) { 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert throw new IllegalArgumentException("The type or subType are invalid."); 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Factory factory; 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if ("currency".equals(type)) { 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert factory = CURRENCY_FACTORY; 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if ("duration".equals(type)) { 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert factory = TIMEUNIT_FACTORY; 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert factory = UNIT_FACTORY; 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return MeasureUnit.addUnit(type, subType, factory); 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 198f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert 199f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert /** 200f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * For ICU use only. 201f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @internal 202f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @deprecated This API is ICU internal only. 203f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 204f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert @Deprecated 205f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert public static MeasureUnit resolveUnitPerUnit(MeasureUnit unit, MeasureUnit perUnit) { 206f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert return unitPerUnitToSingleUnit.get(Pair.of(unit, perUnit)); 207f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert } 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static final UnicodeSet ASCII = new UnicodeSet('a', 'z').freeze(); 210bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert static final UnicodeSet ASCII_HYPHEN_DIGITS = new UnicodeSet('-', '-', '0', '9', 'a', 'z').freeze(); 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert protected interface Factory { 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert MeasureUnit create(String type, String subType); 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static Factory UNIT_FACTORY = new Factory() { 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public MeasureUnit create(String type, String subType) { 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new MeasureUnit(type, subType); 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static Factory CURRENCY_FACTORY = new Factory() { 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public MeasureUnit create(String unusedType, String subType) { 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new Currency(subType); 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static Factory TIMEUNIT_FACTORY = new Factory() { 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public MeasureUnit create(String type, String subType) { 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new TimeUnit(type, subType); 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static { 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // load all of the units for English, since we know that that is a superset. 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * units{ 2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * duration{ 2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * day{ 2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * one{"{0} ден"} 2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * other{"{0} дена"} 2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * } 2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ICUResourceBundle resource = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "en"); 2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (String key : unitKeys) { 2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ICUResourceBundle unitsTypeRes = resource.getWithFallback(key); 2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int size = unitsTypeRes.getSize(); 2597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for ( int index = 0; index < size; ++index) { 2607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert UResourceBundle unitsRes = unitsTypeRes.get(index); 2617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String type = unitsRes.getKey(); 2627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (type.equals("compound")) { 2637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert continue; // special type, does not have any unit plurals 2647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int unitsSize = unitsRes.getSize(); 2667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for ( int index2 = 0; index2 < unitsSize; ++index2) { 2677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ICUResourceBundle unitNameRes = (ICUResourceBundle)unitsRes.get(index2); 2687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (unitNameRes.get("other") != null) { 2697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert internalGetInstance(type, unitNameRes.getKey()); 2707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch ( MissingResourceException e ) { 2747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert continue; 2757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // preallocate currencies 2787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 2797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert UResourceBundle bundle = UResourceBundle.getBundleInstance( 2807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ICUResourceBundle.ICU_BASE_NAME, 2817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "currencyNumericCodes", 2827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ICUResourceBundle.ICU_DATA_CLASS_LOADER); 2837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert UResourceBundle codeMap = bundle.get("codeMap"); 2847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (Enumeration<String> it = codeMap.getKeys(); it.hasMoreElements();) { 2857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert MeasureUnit.internalGetInstance("currency", it.nextElement()); 2867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (MissingResourceException e) { 2887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // fall through 2897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Must only be called at static initialization, or inside synchronized block. 2937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 2947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @internal 2957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @deprecated This API is ICU internal only. 2967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 2977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Deprecated 2987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert protected synchronized static MeasureUnit addUnit(String type, String unitName, Factory factory) { 2997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Map<String, MeasureUnit> tmp = cache.get(type); 3007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (tmp == null) { 3017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cache.put(type, tmp = new HashMap<String, MeasureUnit>()); 3027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 3037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // "intern" the type by setting to first item's type. 3047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert type = tmp.entrySet().iterator().next().getValue().type; 3057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert MeasureUnit unit = tmp.get(unitName); 3077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (unit == null) { 3087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert tmp.put(unitName, unit = factory.create(type, unitName)); 3097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return unit; 3117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* 3157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Useful constants. Not necessarily complete: see {@link #getAvailable()}. 3167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 3177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// All code between the "Start generated MeasureUnit constants" comment and 3197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// the "End generated MeasureUnit constants" comment is auto generated code 3207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// and must not be edited manually. For instructions on how to correctly 3217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// update this code, refer to: 322f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert// http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit 3237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// 3247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Start generated MeasureUnit constants 3257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of acceleration: g-force 328f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 329f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit G_FORCE = MeasureUnit.internalGetInstance("acceleration", "g-force"); 3317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of acceleration: meter-per-second-squared 334bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 335f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METER_PER_SECOND_SQUARED = MeasureUnit.internalGetInstance("acceleration", "meter-per-second-squared"); 3377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: arc-minute 340f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 341f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ARC_MINUTE = MeasureUnit.internalGetInstance("angle", "arc-minute"); 3437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: arc-second 346f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 347f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ARC_SECOND = MeasureUnit.internalGetInstance("angle", "arc-second"); 3497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: degree 352f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 353f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit DEGREE = MeasureUnit.internalGetInstance("angle", "degree"); 3557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: radian 358bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 359f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit RADIAN = MeasureUnit.internalGetInstance("angle", "radian"); 3617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 363bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of angle: revolution 364bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 365bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @provisional This API might change or be removed in a future release. 366bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 367bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit REVOLUTION_ANGLE = MeasureUnit.internalGetInstance("angle", "revolution"); 368bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 369bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 3707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: acre 371f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 372f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ACRE = MeasureUnit.internalGetInstance("area", "acre"); 3747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: hectare 377f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 378f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HECTARE = MeasureUnit.internalGetInstance("area", "hectare"); 3807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-centimeter 383bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 384f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_CENTIMETER = MeasureUnit.internalGetInstance("area", "square-centimeter"); 3867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-foot 389f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 390f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_FOOT = MeasureUnit.internalGetInstance("area", "square-foot"); 3927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-inch 395bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 396f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_INCH = MeasureUnit.internalGetInstance("area", "square-inch"); 3987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-kilometer 401f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 402f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_KILOMETER = MeasureUnit.internalGetInstance("area", "square-kilometer"); 4047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-meter 407f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 408f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_METER = MeasureUnit.internalGetInstance("area", "square-meter"); 4107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-mile 413f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 414f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_MILE = MeasureUnit.internalGetInstance("area", "square-mile"); 4167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-yard 419bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 420f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_YARD = MeasureUnit.internalGetInstance("area", "square-yard"); 4227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 424bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of consumption: liter-per-100kilometers 425bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 4267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 427f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 428bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit LITER_PER_100KILOMETERS = MeasureUnit.internalGetInstance("consumption", "liter-per-100kilometers"); 429bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 430bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 431bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of consumption: liter-per-kilometer 432bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 433bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 4347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LITER_PER_KILOMETER = MeasureUnit.internalGetInstance("consumption", "liter-per-kilometer"); 4357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of consumption: mile-per-gallon 438bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 439f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILE_PER_GALLON = MeasureUnit.internalGetInstance("consumption", "mile-per-gallon"); 4417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: bit 444bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 445f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit BIT = MeasureUnit.internalGetInstance("digital", "bit"); 4477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: byte 450bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 451f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit BYTE = MeasureUnit.internalGetInstance("digital", "byte"); 4537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: gigabit 456bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 457f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGABIT = MeasureUnit.internalGetInstance("digital", "gigabit"); 4597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: gigabyte 462bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 463f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGABYTE = MeasureUnit.internalGetInstance("digital", "gigabyte"); 4657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: kilobit 468bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 469f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOBIT = MeasureUnit.internalGetInstance("digital", "kilobit"); 4717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: kilobyte 474bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 475f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOBYTE = MeasureUnit.internalGetInstance("digital", "kilobyte"); 4777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: megabit 480bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 481f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGABIT = MeasureUnit.internalGetInstance("digital", "megabit"); 4837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: megabyte 486bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 487f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGABYTE = MeasureUnit.internalGetInstance("digital", "megabyte"); 4897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: terabit 492bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 493f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TERABIT = MeasureUnit.internalGetInstance("digital", "terabit"); 4957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: terabyte 498bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 499f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TERABYTE = MeasureUnit.internalGetInstance("digital", "terabyte"); 5017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 503bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of duration: century 504bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 505bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @provisional This API might change or be removed in a future release. 506bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 507bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit CENTURY = MeasureUnit.internalGetInstance("duration", "century"); 508bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 509bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 5107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: day 5117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 512f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit DAY = (TimeUnit) MeasureUnit.internalGetInstance("duration", "day"); 5147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: hour 5177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 518f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit HOUR = (TimeUnit) MeasureUnit.internalGetInstance("duration", "hour"); 5207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: microsecond 523bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 524f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MICROSECOND = MeasureUnit.internalGetInstance("duration", "microsecond"); 5267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: millisecond 529f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 530f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLISECOND = MeasureUnit.internalGetInstance("duration", "millisecond"); 5327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: minute 5357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 536f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit MINUTE = (TimeUnit) MeasureUnit.internalGetInstance("duration", "minute"); 5387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: month 5417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 542f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit MONTH = (TimeUnit) MeasureUnit.internalGetInstance("duration", "month"); 5447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: nanosecond 547bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 548f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit NANOSECOND = MeasureUnit.internalGetInstance("duration", "nanosecond"); 5507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: second 5537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 554f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit SECOND = (TimeUnit) MeasureUnit.internalGetInstance("duration", "second"); 5567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: week 5597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 560f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit WEEK = (TimeUnit) MeasureUnit.internalGetInstance("duration", "week"); 5627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: year 5657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 566f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit YEAR = (TimeUnit) MeasureUnit.internalGetInstance("duration", "year"); 5687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of electric: ampere 571bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 572f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit AMPERE = MeasureUnit.internalGetInstance("electric", "ampere"); 5747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of electric: milliampere 577bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 578f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIAMPERE = MeasureUnit.internalGetInstance("electric", "milliampere"); 5807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of electric: ohm 583bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 584f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit OHM = MeasureUnit.internalGetInstance("electric", "ohm"); 5867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of electric: volt 589bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 590f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit VOLT = MeasureUnit.internalGetInstance("electric", "volt"); 5927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: calorie 595bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 596f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CALORIE = MeasureUnit.internalGetInstance("energy", "calorie"); 5987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: foodcalorie 601bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 602f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FOODCALORIE = MeasureUnit.internalGetInstance("energy", "foodcalorie"); 6047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: joule 607bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 608f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit JOULE = MeasureUnit.internalGetInstance("energy", "joule"); 6107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: kilocalorie 613bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 614f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOCALORIE = MeasureUnit.internalGetInstance("energy", "kilocalorie"); 6167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: kilojoule 619bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 620f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOJOULE = MeasureUnit.internalGetInstance("energy", "kilojoule"); 6227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: kilowatt-hour 625bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 626f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOWATT_HOUR = MeasureUnit.internalGetInstance("energy", "kilowatt-hour"); 6287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: gigahertz 631bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 632f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGAHERTZ = MeasureUnit.internalGetInstance("frequency", "gigahertz"); 6347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: hertz 637bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 638f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HERTZ = MeasureUnit.internalGetInstance("frequency", "hertz"); 6407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: kilohertz 643bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 644f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOHERTZ = MeasureUnit.internalGetInstance("frequency", "kilohertz"); 6467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: megahertz 649bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 650f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGAHERTZ = MeasureUnit.internalGetInstance("frequency", "megahertz"); 6527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: astronomical-unit 655bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 656f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ASTRONOMICAL_UNIT = MeasureUnit.internalGetInstance("length", "astronomical-unit"); 6587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: centimeter 661f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 662f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CENTIMETER = MeasureUnit.internalGetInstance("length", "centimeter"); 6647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: decimeter 667bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 668f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit DECIMETER = MeasureUnit.internalGetInstance("length", "decimeter"); 6707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: fathom 673bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 674f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FATHOM = MeasureUnit.internalGetInstance("length", "fathom"); 6767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: foot 679f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 680f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FOOT = MeasureUnit.internalGetInstance("length", "foot"); 6827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: furlong 685bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 686f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FURLONG = MeasureUnit.internalGetInstance("length", "furlong"); 6887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: inch 691f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 692f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit INCH = MeasureUnit.internalGetInstance("length", "inch"); 6947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: kilometer 697f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 698f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOMETER = MeasureUnit.internalGetInstance("length", "kilometer"); 7007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: light-year 703f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 704f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LIGHT_YEAR = MeasureUnit.internalGetInstance("length", "light-year"); 7067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: meter 709f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 710f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METER = MeasureUnit.internalGetInstance("length", "meter"); 7127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: micrometer 715bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 716f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MICROMETER = MeasureUnit.internalGetInstance("length", "micrometer"); 7187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: mile 721f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 722f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILE = MeasureUnit.internalGetInstance("length", "mile"); 7247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 726bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of length: mile-scandinavian 727bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 728bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @provisional This API might change or be removed in a future release. 729bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 730bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit MILE_SCANDINAVIAN = MeasureUnit.internalGetInstance("length", "mile-scandinavian"); 731bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 732bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 7337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: millimeter 734f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 735f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIMETER = MeasureUnit.internalGetInstance("length", "millimeter"); 7377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: nanometer 740bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 741f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit NANOMETER = MeasureUnit.internalGetInstance("length", "nanometer"); 7437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: nautical-mile 746bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 747f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit NAUTICAL_MILE = MeasureUnit.internalGetInstance("length", "nautical-mile"); 7497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: parsec 752bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 753f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit PARSEC = MeasureUnit.internalGetInstance("length", "parsec"); 7557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: picometer 758f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 759f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit PICOMETER = MeasureUnit.internalGetInstance("length", "picometer"); 7617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: yard 764f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 765f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit YARD = MeasureUnit.internalGetInstance("length", "yard"); 7677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of light: lux 770bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 771f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LUX = MeasureUnit.internalGetInstance("light", "lux"); 7737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: carat 776bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 777f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CARAT = MeasureUnit.internalGetInstance("mass", "carat"); 7797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: gram 782f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 783f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GRAM = MeasureUnit.internalGetInstance("mass", "gram"); 7857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: kilogram 788f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 789f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOGRAM = MeasureUnit.internalGetInstance("mass", "kilogram"); 7917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: metric-ton 794bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 795f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METRIC_TON = MeasureUnit.internalGetInstance("mass", "metric-ton"); 7977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: microgram 800bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 801f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MICROGRAM = MeasureUnit.internalGetInstance("mass", "microgram"); 8037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: milligram 806bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 807f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIGRAM = MeasureUnit.internalGetInstance("mass", "milligram"); 8097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: ounce 812f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 813f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit OUNCE = MeasureUnit.internalGetInstance("mass", "ounce"); 8157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: ounce-troy 818bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 819f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit OUNCE_TROY = MeasureUnit.internalGetInstance("mass", "ounce-troy"); 8217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: pound 824f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 825f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit POUND = MeasureUnit.internalGetInstance("mass", "pound"); 8277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: stone 830bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 831f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit STONE = MeasureUnit.internalGetInstance("mass", "stone"); 8337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: ton 836bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 837f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TON = MeasureUnit.internalGetInstance("mass", "ton"); 8397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: gigawatt 842bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 843f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGAWATT = MeasureUnit.internalGetInstance("power", "gigawatt"); 8457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: horsepower 848f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 849f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HORSEPOWER = MeasureUnit.internalGetInstance("power", "horsepower"); 8517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: kilowatt 854f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 855f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOWATT = MeasureUnit.internalGetInstance("power", "kilowatt"); 8577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: megawatt 860bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 861f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGAWATT = MeasureUnit.internalGetInstance("power", "megawatt"); 8637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: milliwatt 866bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 867f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIWATT = MeasureUnit.internalGetInstance("power", "milliwatt"); 8697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: watt 872f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 873f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit WATT = MeasureUnit.internalGetInstance("power", "watt"); 8757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: hectopascal 878f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 879f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HECTOPASCAL = MeasureUnit.internalGetInstance("pressure", "hectopascal"); 8817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: inch-hg 884f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 885f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit INCH_HG = MeasureUnit.internalGetInstance("pressure", "inch-hg"); 8877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: millibar 890f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 891f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIBAR = MeasureUnit.internalGetInstance("pressure", "millibar"); 8937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: millimeter-of-mercury 896bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 897f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIMETER_OF_MERCURY = MeasureUnit.internalGetInstance("pressure", "millimeter-of-mercury"); 8997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: pound-per-square-inch 902bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 903f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit POUND_PER_SQUARE_INCH = MeasureUnit.internalGetInstance("pressure", "pound-per-square-inch"); 9057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of proportion: karat 908bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 909f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KARAT = MeasureUnit.internalGetInstance("proportion", "karat"); 9117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of speed: kilometer-per-hour 914f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 915f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOMETER_PER_HOUR = MeasureUnit.internalGetInstance("speed", "kilometer-per-hour"); 9177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 919bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of speed: knot 920bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 921bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @provisional This API might change or be removed in a future release. 922bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 923bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit KNOT = MeasureUnit.internalGetInstance("speed", "knot"); 924bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 925bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 9267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of speed: meter-per-second 927f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 928f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METER_PER_SECOND = MeasureUnit.internalGetInstance("speed", "meter-per-second"); 9307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of speed: mile-per-hour 933f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 934f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILE_PER_HOUR = MeasureUnit.internalGetInstance("speed", "mile-per-hour"); 9367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of temperature: celsius 939f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 940f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CELSIUS = MeasureUnit.internalGetInstance("temperature", "celsius"); 9427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of temperature: fahrenheit 945f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 946f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FAHRENHEIT = MeasureUnit.internalGetInstance("temperature", "fahrenheit"); 9487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 950bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of temperature: generic 951bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 9527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 953f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 954bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit GENERIC_TEMPERATURE = MeasureUnit.internalGetInstance("temperature", "generic"); 955bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 956bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 957bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of temperature: kelvin 958bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 959bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 9607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KELVIN = MeasureUnit.internalGetInstance("temperature", "kelvin"); 9617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: acre-foot 964bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 965f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ACRE_FOOT = MeasureUnit.internalGetInstance("volume", "acre-foot"); 9677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: bushel 970bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 971f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit BUSHEL = MeasureUnit.internalGetInstance("volume", "bushel"); 9737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: centiliter 976bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 977f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CENTILITER = MeasureUnit.internalGetInstance("volume", "centiliter"); 9797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-centimeter 982bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 983f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_CENTIMETER = MeasureUnit.internalGetInstance("volume", "cubic-centimeter"); 9857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-foot 988bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 989f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_FOOT = MeasureUnit.internalGetInstance("volume", "cubic-foot"); 9917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-inch 994bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 995f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_INCH = MeasureUnit.internalGetInstance("volume", "cubic-inch"); 9977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-kilometer 1000f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1001f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_KILOMETER = MeasureUnit.internalGetInstance("volume", "cubic-kilometer"); 10037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-meter 1006bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1007f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_METER = MeasureUnit.internalGetInstance("volume", "cubic-meter"); 10097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-mile 1012f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1013f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_MILE = MeasureUnit.internalGetInstance("volume", "cubic-mile"); 10157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-yard 1018bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1019f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_YARD = MeasureUnit.internalGetInstance("volume", "cubic-yard"); 10217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cup 1024bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1025f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUP = MeasureUnit.internalGetInstance("volume", "cup"); 10277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1029bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of volume: cup-metric 1030bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 10317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1032f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 1033bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit CUP_METRIC = MeasureUnit.internalGetInstance("volume", "cup-metric"); 1034bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 1035bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 1036bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of volume: deciliter 1037bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1038bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 10397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit DECILITER = MeasureUnit.internalGetInstance("volume", "deciliter"); 10407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: fluid-ounce 1043bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1044f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FLUID_OUNCE = MeasureUnit.internalGetInstance("volume", "fluid-ounce"); 10467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: gallon 1049bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1050f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GALLON = MeasureUnit.internalGetInstance("volume", "gallon"); 10527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: hectoliter 1055bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1056f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HECTOLITER = MeasureUnit.internalGetInstance("volume", "hectoliter"); 10587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: liter 1061f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1062f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LITER = MeasureUnit.internalGetInstance("volume", "liter"); 10647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: megaliter 1067bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1068f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGALITER = MeasureUnit.internalGetInstance("volume", "megaliter"); 10707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: milliliter 1073bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1074f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLILITER = MeasureUnit.internalGetInstance("volume", "milliliter"); 10767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: pint 1079bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1080f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit PINT = MeasureUnit.internalGetInstance("volume", "pint"); 10827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1084bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of volume: pint-metric 1085bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @draft ICU 56 10867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1087f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 1088bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static final MeasureUnit PINT_METRIC = MeasureUnit.internalGetInstance("volume", "pint-metric"); 1089bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 1090bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 1091bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constant for unit of volume: quart 1092bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1093bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 10947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit QUART = MeasureUnit.internalGetInstance("volume", "quart"); 10957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: tablespoon 1098bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1099f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 11007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TABLESPOON = MeasureUnit.internalGetInstance("volume", "tablespoon"); 11017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 11037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: teaspoon 1104bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * @stable ICU 54 1105f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 11067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TEASPOON = MeasureUnit.internalGetInstance("volume", "teaspoon"); 11077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1108f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert private static HashMap<Pair<MeasureUnit, MeasureUnit>, MeasureUnit>unitPerUnitToSingleUnit = 1109f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert new HashMap<Pair<MeasureUnit, MeasureUnit>, MeasureUnit>(); 1110f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert 1111f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert static { 1112f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.KILOMETER, MeasureUnit.HOUR), MeasureUnit.KILOMETER_PER_HOUR); 1113f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.GALLON), MeasureUnit.MILE_PER_GALLON); 1114f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.HOUR), MeasureUnit.MILE_PER_HOUR); 1115f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.METER, MeasureUnit.SECOND), MeasureUnit.METER_PER_SECOND); 1116f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.LITER, MeasureUnit.KILOMETER), MeasureUnit.LITER_PER_KILOMETER); 1117f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.POUND, MeasureUnit.SQUARE_INCH), MeasureUnit.POUND_PER_SQUARE_INCH); 1118f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert } 1119f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert 11207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // End generated MeasureUnit constants 11217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* Private */ 11227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private Object writeReplace() throws ObjectStreamException { 11247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new MeasureUnitProxy(type, subType); 11257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static final class MeasureUnitProxy implements Externalizable { 11287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static final long serialVersionUID = -3910681415330989598L; 11297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private String type; 11317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private String subType; 11327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public MeasureUnitProxy(String type, String subType) { 11347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.type = type; 11357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.subType = subType; 11367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Must have public constructor, to enable Externalizable 11397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public MeasureUnitProxy() { 11407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void writeExternal(ObjectOutput out) throws IOException { 11437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeByte(0); // version 11447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeUTF(type); 11457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeUTF(subType); 11467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeShort(0); // allow for more data. 11477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { 11507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* byte version = */ in.readByte(); // version 11517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert type = in.readUTF(); 11527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert subType = in.readUTF(); 11537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // allow for more data from future version 11547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int extra = in.readShort(); 11557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (extra > 0) { 11567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[] extraBytes = new byte[extra]; 11577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert in.read(extraBytes, 0, extra); 11587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private Object readResolve() throws ObjectStreamException { 11627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return MeasureUnit.internalGetInstance(type, subType); 11637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 1166