Code review request: bugs 6480728 and 6655735 in the wrapper classes
Joseph D. Darcy
Joe.Darcy at Sun.COM
Wed Oct 7 20:27:58 UTC 2009
Hello.
Please review these simple cleanup fixes in the wrapper classes:
6480728: Byte.valueOf(byte) returns a cached value but Byte.valueOf(String)
6655735: Integer.toString() and String.valueOf(int) contain slow delegations
The fix for the first bug is for the valueOf(String) and decode methods
in Byte and Short to return objects after going through the cache. This
behavior is already present in Integer and Long.
The second fix changes method calls in various wrapper classes and in
String to go to the Foo -> String method most directly implementing the
desired conversion
Patch is below; webrev at
http://cr.openjdk.java.net/~darcy/6480728.0/
-Joe
--- old/src/share/classes/java/lang/Byte.java 2009-10-07
12:18:04.000000000 -0700
+++ new/src/share/classes/java/lang/Byte.java 2009-10-07
12:18:03.000000000 -0700
@@ -201,7 +201,7 @@
*/
public static Byte valueOf(String s, int radix)
throws NumberFormatException {
- return new Byte(parseByte(s, radix));
+ return valueOf(parseByte(s, radix));
}
/**
@@ -277,7 +277,7 @@
if (i < MIN_VALUE || i > MAX_VALUE)
throw new NumberFormatException(
"Value " + i + " out of range from input " + nm);
- return (byte)i;
+ return valueOf((byte)i);
}
/**
@@ -374,7 +374,7 @@
* base 10.
*/
public String toString() {
- return String.valueOf((int)value);
+ return Integer.toString((int)value);
}
/**
--- old/src/share/classes/java/lang/Double.java 2009-10-07
12:18:04.000000000 -0700
+++ new/src/share/classes/java/lang/Double.java 2009-10-07
12:18:04.000000000 -0700
@@ -629,7 +629,7 @@
* @see java.lang.Double#toString(double)
*/
public String toString() {
- return String.valueOf(value);
+ return toString(value);
}
/**
--- old/src/share/classes/java/lang/Float.java 2009-10-07
12:18:05.000000000 -0700
+++ new/src/share/classes/java/lang/Float.java 2009-10-07
12:18:05.000000000 -0700
@@ -551,7 +551,7 @@
* @see java.lang.Float#toString(float)
*/
public String toString() {
- return String.valueOf(value);
+ return Float.toString(value);
}
/**
--- old/src/share/classes/java/lang/Integer.java 2009-10-07
12:18:06.000000000 -0700
+++ new/src/share/classes/java/lang/Integer.java 2009-10-07
12:18:06.000000000 -0700
@@ -746,7 +746,7 @@
* base 10.
*/
public String toString() {
- return String.valueOf(value);
+ return toString(value);
}
/**
--- old/src/share/classes/java/lang/Long.java 2009-10-07
12:18:07.000000000 -0700
+++ new/src/share/classes/java/lang/Long.java 2009-10-07
12:18:07.000000000 -0700
@@ -761,7 +761,7 @@
* base 10.
*/
public String toString() {
- return String.valueOf(value);
+ return toString(value);
}
/**
--- old/src/share/classes/java/lang/Short.java 2009-10-07
12:18:08.000000000 -0700
+++ new/src/share/classes/java/lang/Short.java 2009-10-07
12:18:07.000000000 -0700
@@ -170,7 +170,7 @@
*/
public static Short valueOf(String s, int radix)
throws NumberFormatException {
- return new Short(parseShort(s, radix));
+ return valueOf(parseShort(s, radix));
}
/**
@@ -282,7 +282,7 @@
if (i < MIN_VALUE || i > MAX_VALUE)
throw new NumberFormatException(
"Value " + i + " out of range from input " + nm);
- return (short)i;
+ return valueOf((short)i);
}
/**
@@ -379,7 +379,7 @@
* base 10.
*/
public String toString() {
- return String.valueOf((int)value);
+ return Integer.toString((int)value);
}
/**
--- old/src/share/classes/java/lang/String.java 2009-10-07
12:18:08.000000000 -0700
+++ new/src/share/classes/java/lang/String.java 2009-10-07
12:18:08.000000000 -0700
@@ -2995,7 +2995,7 @@
* @see java.lang.Integer#toString(int, int)
*/
public static String valueOf(int i) {
- return Integer.toString(i, 10);
+ return Integer.toString(i);
}
/**
@@ -3009,7 +3009,7 @@
* @see java.lang.Long#toString(long)
*/
public static String valueOf(long l) {
- return Long.toString(l, 10);
+ return Long.toString(l);
}
/**
More information about the core-libs-dev
mailing list