summaryrefslogtreecommitdiffstats
path: root/luni/src/main/java/java/text/DecimalFormatSymbols.java
diff options
context:
space:
mode:
Diffstat (limited to 'luni/src/main/java/java/text/DecimalFormatSymbols.java')
-rw-r--r--luni/src/main/java/java/text/DecimalFormatSymbols.java23
1 files changed, 19 insertions, 4 deletions
diff --git a/luni/src/main/java/java/text/DecimalFormatSymbols.java b/luni/src/main/java/java/text/DecimalFormatSymbols.java
index 708b291..fba2d6e 100644
--- a/luni/src/main/java/java/text/DecimalFormatSymbols.java
+++ b/luni/src/main/java/java/text/DecimalFormatSymbols.java
@@ -50,7 +50,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
private char percent;
private char perMill;
private char monetarySeparator;
- private char minusSign;
+ private String minusSign;
private String infinity, NaN, currencySymbol, intlCurrencySymbol;
private transient Currency currency;
@@ -81,6 +81,11 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
* the locale.
*/
public DecimalFormatSymbols(Locale locale) {
+ if (locale == null) {
+ throw new NullPointerException("locale == null");
+ }
+
+ locale = LocaleData.mapInvalidAndNullLocales(locale);
LocaleData localeData = LocaleData.get(locale);
this.zeroDigit = localeData.zeroDigit;
this.digit = '#';
@@ -179,7 +184,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
groupingSeparator == obj.groupingSeparator &&
infinity.equals(obj.infinity) &&
intlCurrencySymbol.equals(obj.intlCurrencySymbol) &&
- minusSign == obj.minusSign &&
+ minusSign.equals(obj.minusSign) &&
monetarySeparator == obj.monetarySeparator &&
NaN.equals(obj.NaN) &&
patternSeparator == obj.patternSeparator &&
@@ -288,6 +293,16 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
* @return the minus sign as a character.
*/
public char getMinusSign() {
+ if (minusSign.length() == 1) {
+ return minusSign.charAt(0);
+ }
+
+ throw new UnsupportedOperationException(
+ "Minus sign spans multiple characters: " + minusSign);
+ }
+
+ /** @hide */
+ public String getMinusSignString() {
return minusSign;
}
@@ -366,7 +381,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
result = 31*result + percent;
result = 31*result + perMill;
result = 31*result + monetarySeparator;
- result = 31*result + minusSign;
+ result = 31*result + minusSign.hashCode();
result = 31*result + exponentSeparator.hashCode();
result = 31*result + infinity.hashCode();
result = 31*result + NaN.hashCode();
@@ -487,7 +502,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
* the minus sign character.
*/
public void setMinusSign(char value) {
- this.minusSign = value;
+ this.minusSign = String.valueOf(value);
}
/**