HI Paul,

It simplifies code that looks like this:

followRedirects = builder.followRedirects == null ?
                Redirect.NEVER : builder.followRedirects;

To:
followRedirects = Objects.nonNullOrElse(builder.followRedirects, Redirect.NEVER);

It makes the source code more concise by not repeating the expression twice and
avoids evaluating the expression more than once.

Roger



On 10/6/2015 10:11 AM, Paul Benedict wrote:
If the second value is allowed to be null, then I don't find this new method useful. What value do you see in it? It doesn't provide any extra functionality to a simple if-else/ternary test, right? I throw my lot in with Stephen that the return value must be non-null.


Cheers,
Paul

On Tue, Oct 6, 2015 at 9:06 AM, Roger Riggs <roger.ri...@oracle.com <mailto:roger.ri...@oracle.com>> wrote:

    Hi Paul,

    Hence the question about the method name.
    It already documents explicitly that the nullDefault value is
    returned and does not restrict the value.

    To be a direct replacement for the current code, it should return
    the 2nd value regardless of whether it is null or not.

    Roger




    On 10/6/2015 9:56 AM, Paul Benedict wrote:
    It's quite possible for the second argument to be null. Is that
    your intention? I am not sure it makes sense, but it's not
    harmful either. I recommend you can either (1) explicitly
    document that's a possibility and this method could still return
    null or (2) prevent it by calling requireNonNull.


    Cheers,
    Paul

    On Tue, Oct 6, 2015 at 8:43 AM, Roger Riggs
    <roger.ri...@oracle.com <mailto:roger.ri...@oracle.com>> wrote:

        Java.lang.Objects contains a number of convenience methods to
        make it easier to handle references that are null.
        For example, toString(obj, nullDefault),

        A new method is proposed to return the reference or a default
        value if the reference is null.
           static <T> T nonNull(T obj, T nullDefault);

        Alternatives to the method name include
        nonNullOrElse ( using the java.util.Optional name pattern) or
        nonNullOrDefault

        Please review and comment.

        Webrev:
        http://cr.openjdk.java.net/~rriggs/webrev-object-non-null/
        <http://cr.openjdk.java.net/%7Erriggs/webrev-object-non-null/>

        Issue:
        https://bugs.openjdk.java.net/browse/JDK-8138963

        Thanks, Roger





Reply via email to