Henning P. Schmiedehausen wrote:
Brett Porter <[EMAIL PROTECTED]> writes:
How?
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 ----
import java.io.File;
public class test {
public static void main(String[] args) throws Exception {
System.out.println(String.valueOf((Object) null));
}
}
--- cut ----
[EMAIL PROTECTED] tmp]$ javac test.java
[EMAIL PROTECTED] 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)
[EMAIL PROTECTED] tmp]$ java test
Exception in thread "main" java.lang.NullPointerException
at java.lang.String.<init>(String.java:173)
at java.lang.String.valueOf(String.java:2591)
at test.main(test.java:5)
[EMAIL PROTECTED] tmp]$ javac test.java
[EMAIL PROTECTED] 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)
[EMAIL PROTECTED] tmp]$ java test
null
Oh fsck, Sun, please, please, please don't tell me that you screwed
_that_ one up.....
The javadoc even states:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#valueOf(java.lang.Object)
--- cut ---
valueOf
public static String valueOf(Object obj)
Returns the string representation of the Object argument.
Parameters:
obj - an Object.
Returns:
if the argument is null, then a string equal to "null";
otherwise, the value of obj.toString() is returned.
See Also:
Object.toString()
--- 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... :-)
Regards
Henning
Despite of your test results I think that String.valueOf() is the safer
variant. So I will change this.
Thanks for noticing.
Oliver
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]