What methods should go into a java.util.Objects class in JDK 7?

Martin Buchholz martinrb at google.com
Sun Nov 15 23:48:28 UTC 2009


On Sat, Nov 14, 2009 at 20:46, David Holmes - Sun Microsystems <
David.Holmes at sun.com> wrote:

> Paul,
>
> Paul Benedict said the following on 11/15/09 11:28:
>
>  I would like to propose adding this method:
>>
>> /**
>>  * Selects the object if not {@code null}; otherwise fallsback to the
>>  * specified default object.
>>  *
>>  * @param object the object to test
>>  * @param defaultObject the default object
>>  * @return the object if not {@code null}; otherwise the default object
>>  */
>> public static Object defaultIfNull(Object object, Object defaultObject) {
>>    return (object != null) ? object : defaultObject;
>> }
>>
>
> I don't get it. Why would anyone need the above when they can write:
>
>    obj != null ? obj : otherObj
>

The obvious reason is to save creation of a temp variable

Some<Really<Long<Java<Type<Here>>>>> tmp = longExpression;
return tmp != null ? tmp : defaultValue;

But I'm not in favor of this proposal either.
The biggest problem is that you want
defaultObject to be an expression
that only gets evalutated if tmp == null.
And that suggests adding some kind of syntactic abstraction
that I would like to use myself, but is not
in the spirit of Java.

Martin


> themselves ??? Compared to
>
>    defaultIfNull(obj, otherObj)
>
> you don't even save any keystrokes (and this is with a static import)!
>
> David Holmes
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20091115/2e6760b5/attachment.html>


More information about the core-libs-dev mailing list