RFR 9: 8138963 : java.lang.Objects new method to default to non-null (original) (raw)

Roger Riggs Roger.Riggs at Oracle.com
Tue Oct 6 14:23:15 UTC 2015


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.Riggs at oracle.com_ _<mailto:Roger.Riggs at 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.Riggs at oracle.com <mailto:Roger.Riggs at 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 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



More information about the core-libs-dev mailing list