mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8333396: Use StringBuilder internally for java.text.Format.* formatting
Reviewed-by: naoto, liach, jlu
This commit is contained in:
parent
fd741a88e8
commit
4da9915875
16 changed files with 764 additions and 73 deletions
|
@ -315,6 +315,23 @@ public abstract class NumberFormat extends Format {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
StringBuf format(Object number,
|
||||
StringBuf toAppendTo,
|
||||
FieldPosition pos) {
|
||||
if (number instanceof Long || number instanceof Integer ||
|
||||
number instanceof Short || number instanceof Byte ||
|
||||
number instanceof AtomicInteger || number instanceof AtomicLong ||
|
||||
(number instanceof BigInteger &&
|
||||
((BigInteger) number).bitLength() < 64)) {
|
||||
return format(((Number) number).longValue(), toAppendTo, pos);
|
||||
} else if (number instanceof Number) {
|
||||
return format(((Number) number).doubleValue(), toAppendTo, pos);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Cannot format given Object as a Number");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc Format}
|
||||
*
|
||||
|
@ -347,8 +364,13 @@ public abstract class NumberFormat extends Format {
|
|||
if (result != null)
|
||||
return result;
|
||||
|
||||
return format(number, new StringBuffer(),
|
||||
DontCareFieldPosition.INSTANCE).toString();
|
||||
if ("java.text".equals(getClass().getPackageName())) {
|
||||
return format(number, StringBufFactory.of(),
|
||||
DontCareFieldPosition.INSTANCE).toString();
|
||||
} else {
|
||||
return format(number, new StringBuffer(),
|
||||
DontCareFieldPosition.INSTANCE).toString();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -367,8 +389,13 @@ public abstract class NumberFormat extends Format {
|
|||
* @see java.text.Format#format
|
||||
*/
|
||||
public final String format(long number) {
|
||||
return format(number, new StringBuffer(),
|
||||
DontCareFieldPosition.INSTANCE).toString();
|
||||
if ("java.text".equals(getClass().getPackageName())) {
|
||||
return format(number, StringBufFactory.of(),
|
||||
DontCareFieldPosition.INSTANCE).toString();
|
||||
} else {
|
||||
return format(number, new StringBuffer(),
|
||||
DontCareFieldPosition.INSTANCE).toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -394,6 +421,12 @@ public abstract class NumberFormat extends Format {
|
|||
StringBuffer toAppendTo,
|
||||
FieldPosition pos);
|
||||
|
||||
StringBuf format(double number,
|
||||
StringBuf toAppendTo,
|
||||
FieldPosition pos) {
|
||||
throw new UnsupportedOperationException("Subclasses should override this method");
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialization of format.
|
||||
*
|
||||
|
@ -417,6 +450,12 @@ public abstract class NumberFormat extends Format {
|
|||
StringBuffer toAppendTo,
|
||||
FieldPosition pos);
|
||||
|
||||
StringBuf format(long number,
|
||||
StringBuf toAppendTo,
|
||||
FieldPosition pos) {
|
||||
throw new UnsupportedOperationException("Subclasses should override this method");
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses text from the beginning of the given string to produce a {@code Number}.
|
||||
* <p>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue