Code review request: bugs 6480728 and 6655735 in the wrapper classes

Lance J. Andersen Lance.Andersen at Sun.COM
Wed Oct 7 20:58:59 UTC 2009


Joe,

These look ok to me


-lance

Joseph D. Darcy wrote:
> 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