Thanks, Archie! So String.valueOf((Object) null) would do it. Or "null". ;)
-Matt --- Archie Cobbs <archie.co...@gmail.com> wrote: > Disassembling the class file shows this: > > String.valueOf(null) > -> INVOKESTATIC > java/lang/String.valueOf:([C)Ljava/lang/String; > > String.valueOf((Object)null) > -> INVOKESTATIC > java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; > > In the case of an ambiguous method call, the > compiler chooses the most > specific one. In this case, char[] is a subclass of > Object, so char[] is > chosen. > > But if there is no "most specific" one then the > compiler gives an ambiguous > method call error. > > For example, compile these two classes to see the > difference: > > Works: > > public class Null { > Null() { foobar(null); } // char[] > variant most specific > static void foobar(char[] x) { } > static void foobar(Object x) { } > } > > Fails: > > public class Null { > Null() { foobar(null); } // compiler > error > static void foobar(char[] x) { } > static void foobar(String x) { } > } > > Pretty tricky... > > -Archie > > On Mon, Feb 2, 2009 at 12:31 AM, > <jan.mate...@rzf.fin-nrw.de> wrote: > > > Very curious ... > > > > Source of String.valueOf(Object) from JDK 1.4.2_15 > > > > /** > > * Returns the string representation of the > <code>Object</code> > > argument. > > * > > * @param obj an <code>Object</code>. > > * @return if the argument is > <code>null</code>, then a string equal to > > * <code>"null"</code>; otherwise, the > value of > > * <code>obj.toString()</code> is > returned. > > * @see java.lang.Object#toString() > > */ > > public static String valueOf(Object obj) { > > return (obj == null) ? "null" : > obj.toString(); > > } > > > > > > The same for JDK 1.6.0_10 > > > > public static String valueOf(Object obj) { > > return (obj == null) ? "null" : > obj.toString(); > > } > > > > > > But indeed: > > Java 1.3.0-C : NPE > > Java 1.4.2_15-b02: NPE > > Java 1.5.0_12-b04: NPE > > Java 1.6.0_02-b05: NPE > > > > If I add a cast then it works > > System.out.println(String.valueOf( (Object)null > )); > > > > So the compiler must bind that to another method > than > > String.valueOf(Object) ... > > > > > > But of course, simply returning "null" is much > easier ;) > > > > > > > > Jan > > > > > > > > > -----Ursprüngliche Nachricht----- > > > Von: Martijn Kruithof > [mailto:j...@kruithof.xs4all.nl] > > > Gesendet: Samstag, 31. Januar 2009 22:14 > > > An: Ant Developers List > > > Betreff: Re: svn commit: r739577 - > > > > /ant/core/trunk/src/main/org/apache/tools/ant/property/NullReturn.java > > > > > > Doubted it, checked it and it returned > NullPointerException. > > > > > > D:\>type Test.java > > > public class Test > > > { > > > public static void main(String[] args) > > > { > > > System.out.println(String.valueOf(null)); > > > } > > > } > > > > > > D:\>java Test > > > Exception in thread "main" > java.lang.NullPointerException > > > at java.lang.String.<init>(Unknown > Source) > > > at java.lang.String.valueOf(Unknown > Source) > > > at Test.main(Test.java:6) > > > > > > br Martijn > > > > > > Matt Benson schreef: > > > > I always thought String.valueOf(null) returned > "null". > > > > Was I on crack? > > > > > > > > -Matt > > > > > > > > P.S. Good to see you committing, Martijn... > > > > > > > > --- j...@apache.org wrote: > > > > > > > > > > > >> Author: jkf > > > >> Date: Sat Jan 31 17:10:50 2009 > > > >> New Revision: 739577 > > > >> > > > >> URL: > > > >> > http://svn.apache.org/viewvc?rev=739577&view=rev > > > >> Log: > > > >> Original toString would always throw a NPE. > > > >> > > > >> Modified: > > > >> > > > >> > > > >> > > > > > > > > ant/core/trunk/src/main/org/apache/tools/ant/property/NullReturn.java > > > > > > > >> Modified: > > > >> > > > >> > > > > > > > > ant/core/trunk/src/main/org/apache/tools/ant/property/NullReturn.java > > > > > > > >> URL: > > > >> > > > >> > > > > > > > > http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apach > > > > e/tools/ant/property/NullReturn.java?rev=739577&r1=739576&r2=7 > > 39577&view=diff > > > > > > > > > > > > ============================================================== > > > ================ > > > > > > > >> --- > > > >> > > > >> > > > > > > > > ant/core/trunk/src/main/org/apache/tools/ant/property/NullReturn.java > > > > > > > >> (original) > > > >> +++ > > > >> > > > >> > > > > > > > > ant/core/trunk/src/main/org/apache/tools/ant/property/NullReturn.java > > > > > > > >> Sat Jan 31 17:10:50 2009 > > > >> @@ -33,6 +33,6 @@ > > > >> * {...@inheritdoc} > > > >> */ > > > >> public String toString() { > > > >> - return String.valueOf(null); > > > >> + return "null"; > > > >> } > > > >> } > > > >> > > > >> > > > >> > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: > dev-unsubscr...@ant.apache.org > > > > For additional commands, e-mail: > dev-h...@ant.apache.org > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: > dev-unsubscr...@ant.apache.org > > > For additional commands, e-mail: > dev-h...@ant.apache.org > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: > dev-unsubscr...@ant.apache.org > > For additional commands, e-mail: > dev-h...@ant.apache.org > > > > > > > -- > Archie L. Cobbs > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org