diff --git a/icu4j/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/icu4j/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java index a3ba071b2a1..8a87600e072 100755 --- a/icu4j/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java +++ b/icu4j/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java @@ -681,6 +681,32 @@ public class IBMCalendarTest extends CalendarTest { } } + public void TestComparable() { + GregorianCalendar c0 = new GregorianCalendar(); + GregorianCalendar c1 = new GregorianCalendar(); + c1.add(Calendar.DAY_OF_MONTH, 1); + if (c0.compareTo(c1) >= 0) { + errln("calendar " + c0 + " not < " + c1); + } + c0.add(Calendar.MONTH, 1); + if (c0.compareTo(c1) <= 0) { + errln("calendar " + c0 + " not > " + c1); + } + + c0.setTimeInMillis(c1.getTimeInMillis()); + if (c0.compareTo(c1) != 0) { + errln("calendar " + c0 + " not == " + c1); + } + + // coverage + try { + c0.compareTo((Object)null); + errln("calendar.compareTo didn't object to null arg"); + } + catch (NullPointerException npe) { + } + } + /** * Miscellaneous tests to increase coverage. */ diff --git a/icu4j/src/com/ibm/icu/lang/UCharacter.java b/icu4j/src/com/ibm/icu/lang/UCharacter.java index 8ff9a819711..e88cc4e16ee 100755 --- a/icu4j/src/com/ibm/icu/lang/UCharacter.java +++ b/icu4j/src/com/ibm/icu/lang/UCharacter.java @@ -2627,7 +2627,21 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection * @see #getUnicodeNumericValue */ public static final double NO_NUMERIC_VALUE = -123456789; - + + /** + * Compatibility constant for Java Character's MIN_RADIX. + * @draft ICU 3.4 + * @deprecated This is a draft API and might change in a future release of ICU. + */ + public static final int MIN_RADIX = java.lang.Character.MIN_RADIX; + + /** + * Compatibility constant for Java Character's MAX_RADIX. + * @draft ICU 3.4 + * @deprecated This is a draft API and might change in a future release of ICU. + */ + public static final int MAX_RADIX = java.lang.Character.MAX_RADIX; + // public methods ---------------------------------------------------- /** @@ -2853,6 +2867,20 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection } } + /** + * Compatibility override of Java deprecated method. This + * method will always remain deprecated. Delegates to + * java.lang.Character.isSpace. + * @param cp the code point + * @return true if the code point is a space character as + * defined by java.lang.Character.isSpace. + * @draft ICU 3.4 + * @deprecated + */ + public static boolean isSpace(int ch) { + return java.lang.Character.isSpace((char)(ch & 0xffff)); + } + /** * Returns a value indicating a code point's Unicode category. * Up-to-date Unicode implementation of java.lang.Character.getType() @@ -2958,7 +2986,59 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection | (1 << UCharacterCategory.OTHER_LETTER) | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER))) != 0; } - + + /** + * Compatibility override of Java deprecated method. This + * method will always remain deprecated. Delegates to + * java.lang.Character.isJavaIdentifierStart. + * @param cp the code point + * @return true if the code point can start a java identifier. + * @draft ICU 3.4 + * @deprecated + */ + public static boolean isJavaLetter(int cp) { + return isJavaIdentifierStart(cp); + } + + /** + * Compatibility override of Java deprecated method. This + * method will always remain deprecated. Delegates to + * java.lang.Character.isJavaIdentifierPart. + * @param cp the code point + * @return true if the code point can continue a java identifier. + * @draft ICU 3.4 + * @deprecated + */ + public static boolean isJavaLetterOrDigit(int cp) { + return isJavaLetterOrDigit(cp); + } + + /** + * Compatibility override of Java method, delegates to + * java.lang.Character.isJavaIdentifierStart. + * @param cp the code point + * @return true if the code point can start a java identifier. + * @draft ICU 3.4 + * @deprecated This is a draft API and might change in a future release of ICU. + */ + public static boolean isJavaIdentifierStart(int cp) { + // note, downcast to char for jdk 1.4 compatibility + return java.lang.Character.isJavaIdentifierStart((char)cp); + } + + /** + * Compatibility override of Java method, delegates to + * java.lang.Character.isJavaIdentifierPart. + * @param cp the code point + * @return true if the code point can continue a java identifier. + * @draft ICU 3.4 + * @deprecated This is a draft API and might change in a future release of ICU. + */ + public static boolean isJavaIdentifierPart(int cp) { + // note, downcast to char for jdk 1.4 compatibility + return java.lang.Character.isJavaIdentifierPart((char)cp); + } + /** * Determines if the specified code point is a lowercase character. * UnicodeData only contains case mappings for code points where they are diff --git a/icu4j/src/com/ibm/icu/lang/UCharacterEnums.java b/icu4j/src/com/ibm/icu/lang/UCharacterEnums.java index 5ba4c5eec77..f0669939dad 100644 --- a/icu4j/src/com/ibm/icu/lang/UCharacterEnums.java +++ b/icu4j/src/com/ibm/icu/lang/UCharacterEnums.java @@ -30,184 +30,184 @@ public class UCharacterEnums { * Unassigned character type * @stable ICU 2.1 */ - public static final int UNASSIGNED = 0; + public static final byte UNASSIGNED = 0; /** * Character type Cn * Not Assigned (no characters in [UnicodeData.txt] have this property) * @stable ICU 2.6 */ - public static final int GENERAL_OTHER_TYPES = 0; + public static final byte GENERAL_OTHER_TYPES = 0; /** * Character type Lu * @stable ICU 2.1 */ - public static final int UPPERCASE_LETTER = 1; + public static final byte UPPERCASE_LETTER = 1; /** * Character type Ll * @stable ICU 2.1 */ - public static final int LOWERCASE_LETTER = 2; + public static final byte LOWERCASE_LETTER = 2; /** * Character type Lt * @stable ICU 2.1 */ - public static final int TITLECASE_LETTER = 3; + public static final byte TITLECASE_LETTER = 3; /** * Character type Lm * @stable ICU 2.1 */ - public static final int MODIFIER_LETTER = 4; + public static final byte MODIFIER_LETTER = 4; /** * Character type Lo * @stable ICU 2.1 */ - public static final int OTHER_LETTER = 5; + public static final byte OTHER_LETTER = 5; /** * Character type Mn * @stable ICU 2.1 */ - public static final int NON_SPACING_MARK = 6; + public static final byte NON_SPACING_MARK = 6; /** * Character type Me * @stable ICU 2.1 */ - public static final int ENCLOSING_MARK = 7; + public static final byte ENCLOSING_MARK = 7; /** * Character type Mc * @stable ICU 2.1 */ - public static final int COMBINING_SPACING_MARK = 8; + public static final byte COMBINING_SPACING_MARK = 8; /** * Character type Nd * @stable ICU 2.1 */ - public static final int DECIMAL_DIGIT_NUMBER = 9; + public static final byte DECIMAL_DIGIT_NUMBER = 9; /** * Character type Nl * @stable ICU 2.1 */ - public static final int LETTER_NUMBER = 10; + public static final byte LETTER_NUMBER = 10; /** * Character type No * @stable ICU 2.1 */ - public static final int OTHER_NUMBER = 11; + public static final byte OTHER_NUMBER = 11; /** * Character type Zs * @stable ICU 2.1 */ - public static final int SPACE_SEPARATOR = 12; + public static final byte SPACE_SEPARATOR = 12; /** * Character type Zl * @stable ICU 2.1 */ - public static final int LINE_SEPARATOR = 13; + public static final byte LINE_SEPARATOR = 13; /** * Character type Zp * @stable ICU 2.1 */ - public static final int PARAGRAPH_SEPARATOR = 14; + public static final byte PARAGRAPH_SEPARATOR = 14; /** * Character type Cc * @stable ICU 2.1 */ - public static final int CONTROL = 15; + public static final byte CONTROL = 15; /** * Character type Cf * @stable ICU 2.1 */ - public static final int FORMAT = 16; + public static final byte FORMAT = 16; /** * Character type Co * @stable ICU 2.1 */ - public static final int PRIVATE_USE = 17; + public static final byte PRIVATE_USE = 17; /** * Character type Cs * @stable ICU 2.1 */ - public static final int SURROGATE = 18; + public static final byte SURROGATE = 18; /** * Character type Pd * @stable ICU 2.1 */ - public static final int DASH_PUNCTUATION = 19; + public static final byte DASH_PUNCTUATION = 19; /** * Character type Ps * @stable ICU 2.1 */ - public static final int START_PUNCTUATION = 20; + public static final byte START_PUNCTUATION = 20; /** * Character type Pe * @stable ICU 2.1 */ - public static final int END_PUNCTUATION = 21; + public static final byte END_PUNCTUATION = 21; /** * Character type Pc * @stable ICU 2.1 */ - public static final int CONNECTOR_PUNCTUATION = 22; + public static final byte CONNECTOR_PUNCTUATION = 22; /** * Character type Po * @stable ICU 2.1 */ - public static final int OTHER_PUNCTUATION = 23; + public static final byte OTHER_PUNCTUATION = 23; /** * Character type Sm * @stable ICU 2.1 */ - public static final int MATH_SYMBOL = 24; + public static final byte MATH_SYMBOL = 24; /** * Character type Sc * @stable ICU 2.1 */ - public static final int CURRENCY_SYMBOL = 25; + public static final byte CURRENCY_SYMBOL = 25; /** * Character type Sk * @stable ICU 2.1 */ - public static final int MODIFIER_SYMBOL = 26; + public static final byte MODIFIER_SYMBOL = 26; /** * Character type So * @stable ICU 2.1 */ - public static final int OTHER_SYMBOL = 27; + public static final byte OTHER_SYMBOL = 27; /** * Character type Pi * @see #INITIAL_QUOTE_PUNCTUATION * @stable ICU 2.1 */ - public static final int INITIAL_PUNCTUATION = 28; + public static final byte INITIAL_PUNCTUATION = 28; /** * Character type Pi @@ -216,14 +216,14 @@ public class UCharacterEnums { * @draft ICU 2.8 * @deprecated This is a draft API and might change in a future release of ICU. */ - public static final int INITIAL_QUOTE_PUNCTUATION = 28; + public static final byte INITIAL_QUOTE_PUNCTUATION = 28; /** * Character type Pf * @see #FINAL_QUOTE_PUNCTUATION * @stable ICU 2.1 */ - public static final int FINAL_PUNCTUATION = 29; + public static final byte FINAL_PUNCTUATION = 29; /** * Character type Pf @@ -232,13 +232,13 @@ public class UCharacterEnums { * @draft ICU 2.8 * @deprecated This is a draft API and might change in a future release of ICU. */ - public static final int FINAL_QUOTE_PUNCTUATION = 29; + public static final byte FINAL_QUOTE_PUNCTUATION = 29; /** * Character type count * @stable ICU 2.1 */ - public static final int CHAR_CATEGORY_COUNT = 30; + public static final byte CHAR_CATEGORY_COUNT = 30; } /** @@ -258,7 +258,7 @@ public class UCharacterEnums { public static final int LEFT_TO_RIGHT = 0; /** - * JDK-compatible synonum for LEFT_TO_RIGHT. + * JDK-compatible synonym for LEFT_TO_RIGHT. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -271,7 +271,7 @@ public class UCharacterEnums { public static final int RIGHT_TO_LEFT = 1; /** - * JDK-compatible synonum for RIGHT_TO_LEFT. + * JDK-compatible synonym for RIGHT_TO_LEFT. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -284,7 +284,7 @@ public class UCharacterEnums { public static final int EUROPEAN_NUMBER = 2; /** - * JDK-compatible synonum for EUROPEAN_NUMBER. + * JDK-compatible synonym for EUROPEAN_NUMBER. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -297,7 +297,7 @@ public class UCharacterEnums { public static final int EUROPEAN_NUMBER_SEPARATOR = 3; /** - * JDK-compatible synonum for EUROPEAN_NUMBER_SEPARATOR. + * JDK-compatible synonym for EUROPEAN_NUMBER_SEPARATOR. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -310,7 +310,7 @@ public class UCharacterEnums { public static final int EUROPEAN_NUMBER_TERMINATOR = 4; /** - * JDK-compatible synonum for EUROPEAN_NUMBER_TERMINATOR. + * JDK-compatible synonym for EUROPEAN_NUMBER_TERMINATOR. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -323,7 +323,7 @@ public class UCharacterEnums { public static final int ARABIC_NUMBER = 5; /** - * JDK-compatible synonum for ARABIC_NUMBER. + * JDK-compatible synonym for ARABIC_NUMBER. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -336,7 +336,7 @@ public class UCharacterEnums { public static final int COMMON_NUMBER_SEPARATOR = 6; /** - * JDK-compatible synonum for COMMON_NUMBER_SEPARATOR. + * JDK-compatible synonym for COMMON_NUMBER_SEPARATOR. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -349,7 +349,7 @@ public class UCharacterEnums { public static final int BLOCK_SEPARATOR = 7; /** - * JDK-compatible synonum for BLOCK_SEPARATOR. + * JDK-compatible synonym for BLOCK_SEPARATOR. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -362,7 +362,7 @@ public class UCharacterEnums { public static final int SEGMENT_SEPARATOR = 8; /** - * JDK-compatible synonum for SEGMENT_SEPARATOR. + * JDK-compatible synonym for SEGMENT_SEPARATOR. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -375,7 +375,7 @@ public class UCharacterEnums { public static final int WHITE_SPACE_NEUTRAL = 9; /** - * JDK-compatible synonum for WHITE_SPACE_NEUTRAL. + * JDK-compatible synonym for WHITE_SPACE_NEUTRAL. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -388,7 +388,7 @@ public class UCharacterEnums { public static final int OTHER_NEUTRAL = 10; /** - * JDK-compatible synonum for OTHER_NEUTRAL. + * JDK-compatible synonym for OTHER_NEUTRAL. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -401,7 +401,7 @@ public class UCharacterEnums { public static final int LEFT_TO_RIGHT_EMBEDDING = 11; /** - * JDK-compatible synonum for LEFT_TO_RIGHT_EMBEDDING. + * JDK-compatible synonym for LEFT_TO_RIGHT_EMBEDDING. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -414,7 +414,7 @@ public class UCharacterEnums { public static final int LEFT_TO_RIGHT_OVERRIDE = 12; /** - * JDK-compatible synonum for LEFT_TO_RIGHT_OVERRIDE. + * JDK-compatible synonym for LEFT_TO_RIGHT_OVERRIDE. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -427,7 +427,7 @@ public class UCharacterEnums { public static final int RIGHT_TO_LEFT_ARABIC = 13; /** - * JDK-compatible synonum for RIGHT_TO_LEFT_ARABIC. + * JDK-compatible synonym for RIGHT_TO_LEFT_ARABIC. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -440,7 +440,7 @@ public class UCharacterEnums { public static final int RIGHT_TO_LEFT_EMBEDDING = 14; /** - * JDK-compatible synonum for RIGHT_TO_LEFT_EMBEDDING. + * JDK-compatible synonym for RIGHT_TO_LEFT_EMBEDDING. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -453,7 +453,7 @@ public class UCharacterEnums { public static final int RIGHT_TO_LEFT_OVERRIDE = 15; /** - * JDK-compatible synonum for RIGHT_TO_LEFT_OVERRIDE. + * JDK-compatible synonym for RIGHT_TO_LEFT_OVERRIDE. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -466,7 +466,7 @@ public class UCharacterEnums { public static final int POP_DIRECTIONAL_FORMAT = 16; /** - * JDK-compatible synonum for POP_DIRECTIONAL_FORMAT. + * JDK-compatible synonym for POP_DIRECTIONAL_FORMAT. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ @@ -479,11 +479,11 @@ public class UCharacterEnums { public static final int DIR_NON_SPACING_MARK = 17; /** - * JDK-compatible synonum for DIR_NON_SPACING_MARK. + * JDK-compatible synonym for DIR_NON_SPACING_MARK. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ - public static final byte DIRECTIONALITY_NON_SPACING_MARK = (byte)DIR_NON_SPACING_MARK; + public static final byte DIRECTIONALITY_NONSPACING_MARK = (byte)DIR_NON_SPACING_MARK; /** * Directional type BN @@ -492,7 +492,7 @@ public class UCharacterEnums { public static final int BOUNDARY_NEUTRAL = 18; /** - * JDK-compatible synonum for BOUNDARY_NEUTRAL. + * JDK-compatible synonym for BOUNDARY_NEUTRAL. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ diff --git a/icu4j/src/com/ibm/icu/text/Collator.java b/icu4j/src/com/ibm/icu/text/Collator.java index 078a0581e6b..8bdd68e358b 100755 --- a/icu4j/src/com/ibm/icu/text/Collator.java +++ b/icu4j/src/com/ibm/icu/text/Collator.java @@ -181,6 +181,14 @@ public abstract class Collator implements Comparator, Cloneable */ public final static int IDENTICAL = 15; + /** + * This is for backwards compatibility with Java APIs only. It + * should not be used, IDENTICAL should be used instead. ICU's + * collation does not support Java's FULL_DECOMPOSITION mode. + * @since ICU 3.4 + */ + public final static int FULL_DECOMPOSITION = IDENTICAL; + /** *
Decomposition mode value. With NO_DECOMPOSITION set, Strings * will not be decomposed for collation. This is the default @@ -800,24 +808,6 @@ public abstract class Collator implements Comparator, Cloneable return new UnicodeSet(0, 0x10FFFF); } - /** - * Compares the equality of two Collators. - * @param that the Collator to be compared with this. - * @return true if this Collator is the same as that Collator; - * false otherwise. - * @stable ICU 2.8 - */ - public abstract boolean equals(Object that); - - // public abstract methods ----------------------------------------------- - - /** - * Generates a unique hash code for this Collator. - * @stable ICU 2.8 - * @return 32 bit unique hash code - */ - public abstract int hashCode(); - /** *
* Compares the source text String to the target text String according to
diff --git a/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java b/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java
index 1978f4a458d..101ae97cc5d 100755
--- a/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java
+++ b/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -321,6 +321,40 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable {
intlCurrencySymbol = currency;
}
+ /**
+ * Returns the currency symbol, for JDK 1.4 compatibility only.
+ * ICU clients should use the Currency API directly.
+ * @return the currency used, or null
+ * @draft ICU 3.4
+ */
+ public Currency getCurrency() {
+ return currency;
+ }
+
+ /**
+ * ICU does not use the DecimalFormatSymbols for the
+ * currency any more. This API is present
+ * for API compatibility only.
+ *
+ * This also sets the currency symbol attribute to the currency's symbol
+ * in the DecimalFormatSymbols' locale, and the international currency
+ * symbol attribute to the currency's ISO 4217 currency code.
+ *
+ * @param currency the new currency to be used
+ * @throws NullPointerException if currency
is null
+ * @draft ICU 3.4
+ * @see #setCurrencySymbol
+ * @see #setInternationalCurrencySymbol
+ */
+ public void setCurrency(Currency currency) {
+ if (currency == null) {
+ throw new NullPointerException();
+ }
+ this.currency = currency;
+ intlCurrencySymbol = currency.getCurrencyCode();
+ currencySymbol = currency.getSymbol(locale);
+ }
+
/**
* Return the monetary decimal separator.
* @return the monetary decimal separator character
@@ -564,11 +598,11 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable {
// for backward compatibility; we don't use DecimalFormatSymbols
// for currency data anymore.
String currname = null;
- Currency curr = Currency.getInstance(locale);
- if (curr != null) {
- intlCurrencySymbol = curr.getCurrencyCode();
+ currency = Currency.getInstance(locale);
+ if (currency != null) {
+ intlCurrencySymbol = currency.getCurrencyCode();
boolean[] isChoiceFormat = new boolean[1];
- currname = curr.getName(locale,
+ currname = currency.getName(locale,
Currency.SYMBOL_NAME,
isChoiceFormat);
// If this is a ChoiceFormat currency, then format an
@@ -632,6 +666,9 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable {
ulocale = ULocale.forLocale(locale);
}
serialVersionOnStream = currentSerialVersion;
+
+ // recreate
+ currency = Currency.getInstance(intlCurrencySymbol);
}
/**
@@ -905,5 +942,8 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable {
*/
private ULocale actualLocale;
+ // not serialized, reconstructed from intlCurrencyCode
+ private transient Currency currency;
+
// -------- END ULocale boilerplate --------
}
diff --git a/icu4j/src/com/ibm/icu/text/NumberFormat.java b/icu4j/src/com/ibm/icu/text/NumberFormat.java
index 1ebe9e4bf4b..73d989a907f 100755
--- a/icu4j/src/com/ibm/icu/text/NumberFormat.java
+++ b/icu4j/src/com/ibm/icu/text/NumberFormat.java
@@ -183,9 +183,9 @@ public abstract class NumberFormat extends UFormat {
* and BigDecimal
objects.
* @stable ICU 2.0
*/
- public final StringBuffer format(Object number,
- StringBuffer toAppendTo,
- FieldPosition pos)
+ public StringBuffer format(Object number,
+ StringBuffer toAppendTo,
+ FieldPosition pos)
{
if (number instanceof Long) {
return format(((Long)number).longValue(), toAppendTo, pos);
@@ -1474,9 +1474,11 @@ public abstract class NumberFormat extends UFormat {
static final long serialVersionUID = -2308460125733713944L;
/**
- * Empty constructor.
+ * Empty constructor. Public for compatibily with JDK which lets the
+ * compiler generate a default public constructor even though this is
+ * an abstract class.
* @stable ICU 2.6
*/
- protected NumberFormat() {
+ public NumberFormat() {
}
}
diff --git a/icu4j/src/com/ibm/icu/util/Calendar.java b/icu4j/src/com/ibm/icu/util/Calendar.java
index dc6c1632fba..25ce72ae8ae 100755
--- a/icu4j/src/com/ibm/icu/util/Calendar.java
+++ b/icu4j/src/com/ibm/icu/util/Calendar.java
@@ -631,7 +631,7 @@ import java.util.Set;
* @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu, Laura Werner
* @stable ICU 2.0
*/
-public abstract class Calendar implements Serializable, Cloneable {
+public abstract class Calendar implements Serializable, Cloneable, Comparable {
// Data flow in Calendar
// ---------------------
@@ -2878,6 +2878,39 @@ public abstract class Calendar implements Serializable, Cloneable {
return this.getClass().getName();
}
+ /**
+ * Compares the times (in millis) represented by two
+ * Calendar
objects.
+ *
+ * @param that the Calendar
to compare to this.
+ * @return 0
if the time represented by
+ * this Calendar
is equal to the time represented
+ * by that Calendar
, a value less than
+ * 0
if the time represented by this is before
+ * the time represented by that, and a value greater than
+ * 0
if the time represented by this
+ * is after the time represented by that.
+ * @throws NullPointerException if that
+ * Calendar
is null.
+ * @throws IllegalArgumentException if the time of that
+ * Calendar
can't be obtained because of invalid
+ * calendar values.
+ * @draft ICU 3.4
+ */
+ public int compareTo(Calendar that) {
+ long v = getTimeInMillis() - that.getTimeInMillis();
+ return v < 0 ? -1 : (v > 0 ? 1 : 0);
+ }
+
+ /**
+ * Implement comparable API as a convenience override of
+ * {@link #compareTo(Calendar)}.
+ * @draft ICU 3.4
+ */
+ public int compareTo(Object that) {
+ return compareTo((Calendar)that);
+ }
+
//-------------------------------------------------------------------------
// Interface for creating custon DateFormats for different types of Calendars
//-------------------------------------------------------------------------
diff --git a/icu4j/src/com/ibm/icu/util/Currency.java b/icu4j/src/com/ibm/icu/util/Currency.java
index e2d0e39814f..f34cc89c1ab 100644
--- a/icu4j/src/com/ibm/icu/util/Currency.java
+++ b/icu4j/src/com/ibm/icu/util/Currency.java
@@ -265,6 +265,41 @@ public class Currency extends MeasureUnit implements Serializable {
return isoCode;
}
+ /**
+ * Convenience and compatibility override of getName that
+ * requests the symbol name.
+ * @see getName
+ * @draft ICU 3.4
+ * @deprecated This is a draft API and might change in a future release of ICU.
+ */
+ public String getSymbol() {
+ return getSymbol(ULocale.getDefault());
+ }
+
+ /**
+ * Convenience and compatibility override of getName that
+ * requests the symbol name.
+ * @param loc the Locale for the symbol
+ * @see getName
+ * @draft ICU 3.4
+ * @deprecated This is a draft API and might change in a future release of ICU.
+ */
+ public String getSymbol(Locale loc) {
+ return getSymbol(ULocale.forLocale(loc));
+ }
+
+ /**
+ * Convenience and compatibility override of getName that
+ * requests the symbol name.
+ * @param uloc the ULocale for the symbol
+ * @see getName
+ * @draft ICU 3.4
+ * @deprecated This is a draft API and might change in a future release of ICU.
+ */
+ public String getSymbol(ULocale uloc) {
+ return getName(uloc, SYMBOL_NAME, null);
+ }
+
/**
* Returns the display name for the given currency in the
* given locale. For example, the display name for the USD
@@ -284,7 +319,7 @@ public class Currency extends MeasureUnit implements Serializable {
public String getName(Locale locale,
int nameStyle,
boolean[] isChoiceFormat) {
- return getName(ULocale.forLocale(locale), nameStyle, isChoiceFormat);
+ return getName(ULocale.forLocale(locale), nameStyle, isChoiceFormat);
}
/**
diff --git a/icu4j/src/com/ibm/icu/util/ULocale.java b/icu4j/src/com/ibm/icu/util/ULocale.java
index 92baea7cf9c..5f0c15b848b 100644
--- a/icu4j/src/com/ibm/icu/util/ULocale.java
+++ b/icu4j/src/com/ibm/icu/util/ULocale.java
@@ -268,7 +268,7 @@ public final class ULocale implements Serializable {
* @draft ICU 2.8
* @deprecated This is a draft API and might change in a future release of ICU.
*/
- public static final ULocale ROOT = new ULocale(EMPTY_STRING, null);
+ public static final ULocale ROOT = new ULocale(EMPTY_STRING, (Locale)null);
/**
* Cache the locale.
@@ -767,7 +767,7 @@ public final class ULocale implements Serializable {
* start of the keyword list is indicated by '@', and consists of one
* or more keyword/value pairs separated by commas.
*
- * This constructor not canonicalize the localeID. + * This constructor does not canonicalize the localeID. * * @param localeID string representation of the locale, e.g: * "en_US", "sy_Cyrl_YU", "zh__pinyin", "es_ES@currency=EUR,collation=traditional" @@ -778,6 +778,17 @@ public final class ULocale implements Serializable { this.localeID = getName(localeID); } + /** + * Convenience overload of ULocale(String, String, String) for + * compatibility with java.util.Locale. + * @see ULocale(String, String, String) + * @draft ICU 3.4 + * @deprecated This is a draft API and might change in a future release of ICU. + */ + public ULocale(String a, String b) { + this(a, b, null); + } + /** * Construct a ULocale from a localeID constructed from the three 'fields' a, b, and c. These * fields are concatenated using underscores to form a localeID of @@ -811,7 +822,7 @@ public final class ULocale implements Serializable { * @deprecated This is a draft API and might change in a future release of ICU. */ public static ULocale createCanonical(String nonCanonicalID) { - return new ULocale(canonicalize(nonCanonicalID), null); + return new ULocale(canonicalize(nonCanonicalID), (Locale)null); } private static String lscvToID(String lang, String script, String country, String variant) { @@ -1073,7 +1084,7 @@ public final class ULocale implements Serializable { if (localeID.length() == 0 || localeID.charAt(0) == '@') { return null; } - return new ULocale(getFallbackString(localeID), null); + return new ULocale(getFallbackString(localeID), (Locale)null); } /** @@ -1990,7 +2001,7 @@ public final class ULocale implements Serializable { * @deprecated This is a draft API and might change in a future release of ICU. */ public ULocale setKeywordValue(String keyword, String value) { - return new ULocale(setKeywordValue(localeID, keyword, value), null); + return new ULocale(setKeywordValue(localeID, keyword, value), (Locale)null); } /** diff --git a/icu4j/src/com/ibm/icu/util/UResourceBundle.java b/icu4j/src/com/ibm/icu/util/UResourceBundle.java index a59f5f40994..f12f629701d 100644 --- a/icu4j/src/com/ibm/icu/util/UResourceBundle.java +++ b/icu4j/src/com/ibm/icu/util/UResourceBundle.java @@ -130,12 +130,13 @@ public abstract class UResourceBundle extends ResourceBundle{ /** * Sole constructor. (For invocation by subclass constructors, typically - * implicit.) + * implicit.) This is public for compatibility with Java, whose compiler + * will generate public default constructors for an abstract class. * @draft ICU 3.0 * @deprecated This is a draft API and might change in a future release of ICU. */ - protected UResourceBundle() { } - + public UResourceBundle() { + } /** * Creates a UResourceBundle for the locale specified, from which users can extract resources by using