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)) { 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!ASCII.containsAll(type) || !ASCII_HYPHEN.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(); 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static final UnicodeSet ASCII_HYPHEN = new UnicodeSet('-', '-', '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 3347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 3357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 336f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METER_PER_SECOND_SQUARED = MeasureUnit.internalGetInstance("acceleration", "meter-per-second-squared"); 3387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: arc-minute 341f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 342f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ARC_MINUTE = MeasureUnit.internalGetInstance("angle", "arc-minute"); 3447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: arc-second 347f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 348f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ARC_SECOND = MeasureUnit.internalGetInstance("angle", "arc-second"); 3507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: degree 353f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 354f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit DEGREE = MeasureUnit.internalGetInstance("angle", "degree"); 3567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of angle: radian 3597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 3607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 361f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit RADIAN = MeasureUnit.internalGetInstance("angle", "radian"); 3637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: acre 366f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 367f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ACRE = MeasureUnit.internalGetInstance("area", "acre"); 3697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: hectare 372f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 373f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HECTARE = MeasureUnit.internalGetInstance("area", "hectare"); 3757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-centimeter 3787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 3797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 380f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_CENTIMETER = MeasureUnit.internalGetInstance("area", "square-centimeter"); 3827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-foot 385f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 386f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_FOOT = MeasureUnit.internalGetInstance("area", "square-foot"); 3887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-inch 3917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 3927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 393f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 3947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_INCH = MeasureUnit.internalGetInstance("area", "square-inch"); 3957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-kilometer 398f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 399f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_KILOMETER = MeasureUnit.internalGetInstance("area", "square-kilometer"); 4017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-meter 404f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 405f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_METER = MeasureUnit.internalGetInstance("area", "square-meter"); 4077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-mile 410f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 411f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_MILE = MeasureUnit.internalGetInstance("area", "square-mile"); 4137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of area: square-yard 4167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 418f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit SQUARE_YARD = MeasureUnit.internalGetInstance("area", "square-yard"); 4207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of consumption: liter-per-kilometer 4237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 425f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LITER_PER_KILOMETER = MeasureUnit.internalGetInstance("consumption", "liter-per-kilometer"); 4277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of consumption: mile-per-gallon 4307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 432f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILE_PER_GALLON = MeasureUnit.internalGetInstance("consumption", "mile-per-gallon"); 4347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: bit 4377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 439f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit BIT = MeasureUnit.internalGetInstance("digital", "bit"); 4417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: byte 4447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 446f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit BYTE = MeasureUnit.internalGetInstance("digital", "byte"); 4487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: gigabit 4517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 453f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGABIT = MeasureUnit.internalGetInstance("digital", "gigabit"); 4557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: gigabyte 4587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 460f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGABYTE = MeasureUnit.internalGetInstance("digital", "gigabyte"); 4627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: kilobit 4657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 467f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOBIT = MeasureUnit.internalGetInstance("digital", "kilobit"); 4697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: kilobyte 4727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 474f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOBYTE = MeasureUnit.internalGetInstance("digital", "kilobyte"); 4767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: megabit 4797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 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 4867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 488f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGABYTE = MeasureUnit.internalGetInstance("digital", "megabyte"); 4907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: terabit 4937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 4947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 495f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 4967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TERABIT = MeasureUnit.internalGetInstance("digital", "terabit"); 4977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 4997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of digital: terabyte 5007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 502f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TERABYTE = MeasureUnit.internalGetInstance("digital", "terabyte"); 5047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: day 5077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 508f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit DAY = (TimeUnit) MeasureUnit.internalGetInstance("duration", "day"); 5107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: hour 5137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 514f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit HOUR = (TimeUnit) MeasureUnit.internalGetInstance("duration", "hour"); 5167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: microsecond 5197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 521f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MICROSECOND = MeasureUnit.internalGetInstance("duration", "microsecond"); 5237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: millisecond 526f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 527f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLISECOND = MeasureUnit.internalGetInstance("duration", "millisecond"); 5297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: minute 5327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 533f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit MINUTE = (TimeUnit) MeasureUnit.internalGetInstance("duration", "minute"); 5357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: month 538f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * 5397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 540f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit MONTH = (TimeUnit) MeasureUnit.internalGetInstance("duration", "month"); 5427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: nanosecond 5457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 547f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit NANOSECOND = MeasureUnit.internalGetInstance("duration", "nanosecond"); 5497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: second 5527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 553f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit SECOND = (TimeUnit) MeasureUnit.internalGetInstance("duration", "second"); 5557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: week 5587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 559f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit WEEK = (TimeUnit) MeasureUnit.internalGetInstance("duration", "week"); 5617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of duration: year 5647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 4.0 565f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final TimeUnit YEAR = (TimeUnit) MeasureUnit.internalGetInstance("duration", "year"); 5677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of electric: ampere 5707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 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 5777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 579f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIAMPERE = MeasureUnit.internalGetInstance("electric", "milliampere"); 5817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of electric: ohm 5847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 586f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit OHM = MeasureUnit.internalGetInstance("electric", "ohm"); 5887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of electric: volt 5917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 593f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 5947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit VOLT = MeasureUnit.internalGetInstance("electric", "volt"); 5957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 5967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 5977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: calorie 5987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 5997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 600f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CALORIE = MeasureUnit.internalGetInstance("energy", "calorie"); 6027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: foodcalorie 6057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 607f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FOODCALORIE = MeasureUnit.internalGetInstance("energy", "foodcalorie"); 6097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: joule 6127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 614f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit JOULE = MeasureUnit.internalGetInstance("energy", "joule"); 6167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: kilocalorie 6197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 621f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOCALORIE = MeasureUnit.internalGetInstance("energy", "kilocalorie"); 6237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: kilojoule 6267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 628f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOJOULE = MeasureUnit.internalGetInstance("energy", "kilojoule"); 6307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of energy: kilowatt-hour 6337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 635f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOWATT_HOUR = MeasureUnit.internalGetInstance("energy", "kilowatt-hour"); 6377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: gigahertz 6407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 642f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGAHERTZ = MeasureUnit.internalGetInstance("frequency", "gigahertz"); 6447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: hertz 6477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 649f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HERTZ = MeasureUnit.internalGetInstance("frequency", "hertz"); 6517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: kilohertz 6547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 656f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOHERTZ = MeasureUnit.internalGetInstance("frequency", "kilohertz"); 6587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of frequency: megahertz 6617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 663f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGAHERTZ = MeasureUnit.internalGetInstance("frequency", "megahertz"); 6657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: astronomical-unit 6687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 670f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ASTRONOMICAL_UNIT = MeasureUnit.internalGetInstance("length", "astronomical-unit"); 6727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: centimeter 675f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 676f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CENTIMETER = MeasureUnit.internalGetInstance("length", "centimeter"); 6787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: decimeter 6817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 683f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit DECIMETER = MeasureUnit.internalGetInstance("length", "decimeter"); 6857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: fathom 6887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 6897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 690f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FATHOM = MeasureUnit.internalGetInstance("length", "fathom"); 6927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 6947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: foot 695f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 696f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 6977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FOOT = MeasureUnit.internalGetInstance("length", "foot"); 6987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 6997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: furlong 7017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 7027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 703f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FURLONG = MeasureUnit.internalGetInstance("length", "furlong"); 7057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: inch 708f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 709f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit INCH = MeasureUnit.internalGetInstance("length", "inch"); 7117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: kilometer 714f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 715f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOMETER = MeasureUnit.internalGetInstance("length", "kilometer"); 7177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: light-year 720f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 721f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LIGHT_YEAR = MeasureUnit.internalGetInstance("length", "light-year"); 7237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: meter 726f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 727f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METER = MeasureUnit.internalGetInstance("length", "meter"); 7297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: micrometer 7327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 7337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 734f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MICROMETER = MeasureUnit.internalGetInstance("length", "micrometer"); 7367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: mile 739f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 740f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILE = MeasureUnit.internalGetInstance("length", "mile"); 7427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: millimeter 745f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 746f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIMETER = MeasureUnit.internalGetInstance("length", "millimeter"); 7487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: nanometer 7517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 7527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 753f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit NANOMETER = MeasureUnit.internalGetInstance("length", "nanometer"); 7557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: nautical-mile 7587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 7597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 760f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit NAUTICAL_MILE = MeasureUnit.internalGetInstance("length", "nautical-mile"); 7627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: parsec 7657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 7667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 767f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit PARSEC = MeasureUnit.internalGetInstance("length", "parsec"); 7697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: picometer 772f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 773f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit PICOMETER = MeasureUnit.internalGetInstance("length", "picometer"); 7757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of length: yard 778f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 779f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit YARD = MeasureUnit.internalGetInstance("length", "yard"); 7817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of light: lux 7847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 7857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 786f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LUX = MeasureUnit.internalGetInstance("light", "lux"); 7887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: carat 7917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 7927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 793f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 7947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CARAT = MeasureUnit.internalGetInstance("mass", "carat"); 7957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 7967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 7977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: gram 798f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 799f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GRAM = MeasureUnit.internalGetInstance("mass", "gram"); 8017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: kilogram 804f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 805f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOGRAM = MeasureUnit.internalGetInstance("mass", "kilogram"); 8077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: metric-ton 8107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 812f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METRIC_TON = MeasureUnit.internalGetInstance("mass", "metric-ton"); 8147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: microgram 8177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 819f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MICROGRAM = MeasureUnit.internalGetInstance("mass", "microgram"); 8217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: milligram 8247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 826f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIGRAM = MeasureUnit.internalGetInstance("mass", "milligram"); 8287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: ounce 831f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 832f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit OUNCE = MeasureUnit.internalGetInstance("mass", "ounce"); 8347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: ounce-troy 8377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 839f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit OUNCE_TROY = MeasureUnit.internalGetInstance("mass", "ounce-troy"); 8417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: pound 844f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 845f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit POUND = MeasureUnit.internalGetInstance("mass", "pound"); 8477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: stone 8507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 852f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit STONE = MeasureUnit.internalGetInstance("mass", "stone"); 8547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of mass: ton 8577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 859f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TON = MeasureUnit.internalGetInstance("mass", "ton"); 8617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: gigawatt 8647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 866f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GIGAWATT = MeasureUnit.internalGetInstance("power", "gigawatt"); 8687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: horsepower 871f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 872f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HORSEPOWER = MeasureUnit.internalGetInstance("power", "horsepower"); 8747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: kilowatt 877f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 878f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOWATT = MeasureUnit.internalGetInstance("power", "kilowatt"); 8807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: megawatt 8837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 885f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGAWATT = MeasureUnit.internalGetInstance("power", "megawatt"); 8877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: milliwatt 8907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 8917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 892f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIWATT = MeasureUnit.internalGetInstance("power", "milliwatt"); 8947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 8957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 8967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of power: watt 897f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 898f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 8997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit WATT = MeasureUnit.internalGetInstance("power", "watt"); 9007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: hectopascal 903f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 904f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HECTOPASCAL = MeasureUnit.internalGetInstance("pressure", "hectopascal"); 9067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: inch-hg 909f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 910f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit INCH_HG = MeasureUnit.internalGetInstance("pressure", "inch-hg"); 9127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: millibar 915f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 916f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIBAR = MeasureUnit.internalGetInstance("pressure", "millibar"); 9187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: millimeter-of-mercury 9217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 9227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 923f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLIMETER_OF_MERCURY = MeasureUnit.internalGetInstance("pressure", "millimeter-of-mercury"); 9257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of pressure: pound-per-square-inch 9287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 9297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 930f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit POUND_PER_SQUARE_INCH = MeasureUnit.internalGetInstance("pressure", "pound-per-square-inch"); 9327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of proportion: karat 9357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 9367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 937f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KARAT = MeasureUnit.internalGetInstance("proportion", "karat"); 9397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of speed: kilometer-per-hour 942f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 943f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KILOMETER_PER_HOUR = MeasureUnit.internalGetInstance("speed", "kilometer-per-hour"); 9457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of speed: meter-per-second 948f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 949f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit METER_PER_SECOND = MeasureUnit.internalGetInstance("speed", "meter-per-second"); 9517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of speed: mile-per-hour 954f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 955f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILE_PER_HOUR = MeasureUnit.internalGetInstance("speed", "mile-per-hour"); 9577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of temperature: celsius 960f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 961f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CELSIUS = MeasureUnit.internalGetInstance("temperature", "celsius"); 9637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of temperature: fahrenheit 966f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 967f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FAHRENHEIT = MeasureUnit.internalGetInstance("temperature", "fahrenheit"); 9697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of temperature: kelvin 9727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 9737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 974f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit KELVIN = MeasureUnit.internalGetInstance("temperature", "kelvin"); 9767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: acre-foot 9797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 9807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 981f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit ACRE_FOOT = MeasureUnit.internalGetInstance("volume", "acre-foot"); 9837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: bushel 9867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 9877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 988f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit BUSHEL = MeasureUnit.internalGetInstance("volume", "bushel"); 9907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: centiliter 9937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 9947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 995f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 9967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CENTILITER = MeasureUnit.internalGetInstance("volume", "centiliter"); 9977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 9987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 9997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-centimeter 10007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1002f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_CENTIMETER = MeasureUnit.internalGetInstance("volume", "cubic-centimeter"); 10047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-foot 10077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1009f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_FOOT = MeasureUnit.internalGetInstance("volume", "cubic-foot"); 10117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-inch 10147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1016f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_INCH = MeasureUnit.internalGetInstance("volume", "cubic-inch"); 10187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-kilometer 1021f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1022f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_KILOMETER = MeasureUnit.internalGetInstance("volume", "cubic-kilometer"); 10247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-meter 10277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1029f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_METER = MeasureUnit.internalGetInstance("volume", "cubic-meter"); 10317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-mile 1034f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1035f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_MILE = MeasureUnit.internalGetInstance("volume", "cubic-mile"); 10377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cubic-yard 10407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1042f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUBIC_YARD = MeasureUnit.internalGetInstance("volume", "cubic-yard"); 10447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: cup 10477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1049f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit CUP = MeasureUnit.internalGetInstance("volume", "cup"); 10517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: deciliter 10547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1056f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit DECILITER = MeasureUnit.internalGetInstance("volume", "deciliter"); 10587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: fluid-ounce 10617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1063f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit FLUID_OUNCE = MeasureUnit.internalGetInstance("volume", "fluid-ounce"); 10657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: gallon 10687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1070f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit GALLON = MeasureUnit.internalGetInstance("volume", "gallon"); 10727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: hectoliter 10757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1077f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit HECTOLITER = MeasureUnit.internalGetInstance("volume", "hectoliter"); 10797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: liter 1082f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * @stable ICU 53 1083f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit LITER = MeasureUnit.internalGetInstance("volume", "liter"); 10857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: megaliter 10887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1090f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MEGALITER = MeasureUnit.internalGetInstance("volume", "megaliter"); 10927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 10937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 10947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: milliliter 10957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 10967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1097f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 10987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit MILLILITER = MeasureUnit.internalGetInstance("volume", "milliliter"); 10997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 11017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: pint 11027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 11037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1104f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 11057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit PINT = MeasureUnit.internalGetInstance("volume", "pint"); 11067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 11087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: quart 11097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 11107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1111f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 11127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit QUART = MeasureUnit.internalGetInstance("volume", "quart"); 11137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 11157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: tablespoon 11167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 11177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1118f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 11197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TABLESPOON = MeasureUnit.internalGetInstance("volume", "tablespoon"); 11207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 11227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Constant for unit of volume: teaspoon 11237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @draft ICU 54 11247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @provisional This API might change or be removed in a future release. 1125f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert */ 11267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final MeasureUnit TEASPOON = MeasureUnit.internalGetInstance("volume", "teaspoon"); 11277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1128f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert private static HashMap<Pair<MeasureUnit, MeasureUnit>, MeasureUnit>unitPerUnitToSingleUnit = 1129f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert new HashMap<Pair<MeasureUnit, MeasureUnit>, MeasureUnit>(); 1130f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert 1131f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert static { 1132f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.KILOMETER, MeasureUnit.HOUR), MeasureUnit.KILOMETER_PER_HOUR); 1133f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.GALLON), MeasureUnit.MILE_PER_GALLON); 1134f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.HOUR), MeasureUnit.MILE_PER_HOUR); 1135f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.METER, MeasureUnit.SECOND), MeasureUnit.METER_PER_SECOND); 1136f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.LITER, MeasureUnit.KILOMETER), MeasureUnit.LITER_PER_KILOMETER); 1137f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.POUND, MeasureUnit.SQUARE_INCH), MeasureUnit.POUND_PER_SQUARE_INCH); 1138f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert } 1139f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert 11407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // End generated MeasureUnit constants 11417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* Private */ 11427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private Object writeReplace() throws ObjectStreamException { 11447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new MeasureUnitProxy(type, subType); 11457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert static final class MeasureUnitProxy implements Externalizable { 11487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static final long serialVersionUID = -3910681415330989598L; 11497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private String type; 11517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private String subType; 11527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public MeasureUnitProxy(String type, String subType) { 11547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.type = type; 11557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.subType = subType; 11567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Must have public constructor, to enable Externalizable 11597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public MeasureUnitProxy() { 11607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void writeExternal(ObjectOutput out) throws IOException { 11637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeByte(0); // version 11647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeUTF(type); 11657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeUTF(subType); 11667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.writeShort(0); // allow for more data. 11677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { 11707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* byte version = */ in.readByte(); // version 11717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert type = in.readUTF(); 11727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert subType = in.readUTF(); 11737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // allow for more data from future version 11747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int extra = in.readShort(); 11757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (extra > 0) { 11767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[] extraBytes = new byte[extra]; 11777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert in.read(extraBytes, 0, extra); 11787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 11817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private Object readResolve() throws ObjectStreamException { 11827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return MeasureUnit.internalGetInstance(type, subType); 11837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 11857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 1186