Re:Hello, I’m Mr. Null. My Name Makes Me Invisible to Computers
by avz on Monday September 05, 2016 @02:59AM
(#12428604)
> Since the empty String is a valid String, and Strinfg.valueOf() also returns a String, what other behavior would you ever imagine being sane or possible?
IMHO, String.valueOf() throwing NPE upon encountering a null reference would be both sane and possible.
Unfortunately, it does indeed appear that it returns "null" instead [1].
[1] https://docs.oracle.com/javase/7/docs/api/java/lang/String.h...
Re:Hello, I’m Mr. Null. My Name Makes Me Invisible to Computers
by samuellb on Monday September 05, 2016 @04:19AM
(#12428876)
On the other hand, it's quite convenient to not have to do null checks in debug messages. Compare:
log.trace("doStuff(" + obj1 + ", " + obj2 + ")");
to this:
log.trace("doStuff(" + (obj1 != null ? obj1 : "null") + ", " + (obj2 != null ? obj2 : "null") + ")");
The second one is IMHO quite hard to read, even in this short example (and code readability is important when you do code reviews)
Re:Hello, I’m Mr. Null. My Name Makes Me Invisible to Computers
by tomtomtom777 on Monday September 05, 2016 @04:53AM
(#12428991)
That is why you should use string formatting instead of concatenation.
For string formatting, rendering "null" (or "") makes sense; for coercion not.
Re:Hello, I’m Mr. Null. My Name Makes Me Invisible to Computers
by richardwhiuk on Monday September 05, 2016 @06:16AM
(#12429271)
That just resolves into everyone always doing formatting, and never doing concatenation, which yields the same problem.
Re:Hello, I’m Mr. Null. My Name Makes Me Invisible to Computers
by ajuc on Monday September 05, 2016 @03:35AM
(#12428718)
It should just throw NPE. I understand why people writing quick debug printlns could be infuriated by that, but the way it works now leads to much more subtle bugs.
Re:Hello, I’m Mr. Null. My Name Makes Me Invisible to Computers
by abritinthebay on Sunday September 04, 2016 @11:02PM
(#12427843)
An empty string of it HAS to be a string would make infinitely more sense. However a type error wouldn't toady on a strongly typed language
Since the empty String is a valid String, and Strinfg.valueOf() also returns a String, what other behavior would you ever imagine being sane or possible?