Hi all, That's interesting issue. Compiler when running into ..?..:.. expression first determines its common type, then applies autoboxing and then optimizes the expression. Let's consider two types: (1) <condition> ? Double : double (2) <condition> ? Double : Double
I think compiler determines common type for (1) as 'double' (perhaps for performance reasons?), while for (2) it's 'Double' Then it applies autoboxing where needed. If (1) and (2) are being assigned to Double, then (2) doesn't need to be boxed, while both arguments in (1) are wrapped with Double.valueOf(..). At the end it optimizes the whole expression. As what's in front of 'if' is always true, it leaves out only the middle argument. This way the following code: Double v1 = null; Double v2 = true ? v1 : 0d; gets compiled and then decompiled to ridiculous form: Double v1 = null; Double v2 = Double.valueOf(v1.doubleValue()); Regards, Jedrzej On Oct 19, 2009, at 5:31 PM, Ramsey Gurley wrote: > Hi all, > > I've just discovered that while > > Double test = true?null:0d; //result: test is null > > works without error, the following > > Double test2 = true?(new Object(){public Double testMethod(){return > null;}}.testMethod()):0d; //<-Throws NPE > > Throws a NullPointerException. :-/ Ok, that sucks, so what about > this? > > Double test3 = new Object(){public Double testMethod2(){return > null;}}.testMethod2(); // result: test3 is null > Double test4 = true?test3:0d; //<-Throws NPE > > Also throws a NullPointerException. I suspect this has something to > do with the autoboxing, because > > Object test5 = true?new Object(){public Object testMethod3(){return > null;}}.testMethod3():0d; > > Works fine. I'm running OS X 10.5 and java 1.5 here at work. Is this > a known issue? Or is this somehow expected behavior? > > Ramsey > > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/webobjects-dev/jsobanski%40upcbroadband.com > > This email sent to jsoban...@upcbroadband.com _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com