commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henning P. Schmiedehausen" <>
Subject Re: svn commit: r233505 - in /jakarta/commons/proper/configuration/trunk/src:
Date Mon, 22 Aug 2005 12:48:14 GMT
Brett Porter <> writes:


>if keyBuffer is null (which it isn't, the constructor initialises it),
>String.valueOf( keyBuffer ) would be an NPE as well. toString() should
>not return null and won't for a StringBuffer.

What the...?????

--- cut ----

public class test {
    public static void main(String[] args) throws Exception {
        System.out.println(String.valueOf((Object) null));
--- cut ----

[henning@forge tmp]$ javac
[henning@forge tmp]$ java -version
java version "1.5.0_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-b09)
Java HotSpot(TM) Client VM (build 1.5.0_02-b09, mixed mode, sharing)
[henning@forge tmp]$ java test
Exception in thread "main" java.lang.NullPointerException
        at java.lang.String.<init>(
        at java.lang.String.valueOf(
        at test.main(

[henning@forge tmp]$ javac
[henning@forge tmp]$ java -version
java version "1.4.2_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
[henning@forge tmp]$ java test

Oh fsck, Sun, please, please, please don't tell me that you screwed
_that_ one up.....

The javadoc even states:

--- cut ---

public static String valueOf(Object obj)

    Returns the string representation of the Object argument.

        obj - an Object. 
        if the argument is null, then a string equal to "null";
        otherwise, the value of obj.toString() is returned.
    See Also:

--- cut ---

Congrats. You found a bug. IMHO.

This is BTW one of my personal mnemonics. 

I do replace foobar.toString() with String.valueOf(foobar) because up
until a few seconds ago I was under the firm impression, that
String.valueOf(...) could _never_ throw NPE. This is a constant source
of sorrow with code that I'm working on, because often co-workers tell
me "that can never be null". Yeah, unless, some weird condition
happens that was not tested for and surfaced after customer
installation. Better safe than sorry. Defensive programming... :-)


Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH        +49 9131 50 654 0

RedHat Certified Engineer -- Jakarta Turbine Development  -- hero for hire
   Linux, Java, perl, Solaris -- Consulting, Training, Development

		      4 - 8 - 15 - 16 - 23 - 42

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message