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