First round of java.util.Objects for code review (bug 6797535)

Joseph D. Darcy Joe.Darcy at Sun.COM
Tue Oct 13 18:12:49 UTC 2009


Joshua Bloch wrote:
> Joe,
>
> Hi.  I've attached a file containing the methods and a JTReg "basic 
> test" for inclusion in your BasicObjectTests.  I adhered to your 
> style, for easy integration. If you could take it from here, I'd be 
> ever so grateful.

Will do.

Cheers,

-Joe

>
>     Thanks,
>
>     Josh
>
> On Thu, Oct 8, 2009 at 6:21 PM, Joe Darcy <Joe.Darcy at sun.com 
> <mailto:Joe.Darcy at sun.com>> wrote:
>
>
>         I strongly suggest that you do add these two methods:
>
>            /**
>             * Checks that the specified object reference is not {@code
>         null}. This
>             * method is designed primarily for doing parameter
>         validation in methods
>             * and constructors, as demonstrated below:
>             * <pre>
>             * public Foo(Bar bar) {
>             *     this.bar = Objects.nonNull(bar);
>             * }
>             * </pre>
>             *
>             * @param obj the object reference to check for nullity
>             * @return {@code obj} if not {@code null}
>             * @throws NullPointerException if {@code obj} is {@code null}
>             */
>            public static <T> T nonNull(T obj) {
>                if (obj == null)
>                    throw new NullPointerException();
>                return obj;
>            }
>
>            /**
>             * Checks that the specified object reference is not {@code
>         null} and
>             * throws a customized {@Link NullPointerException} if it
>         is. This method
>             * is designed primarily for doing parameter validation in
>         methods and
>             * constructors with multiple parameters, as demonstrated
>         below:
>             * <pre>
>             * public Foo(Bar bar, Baz baz) {
>             *     this.bar = Objects.nonNull(bar, "bar must not be null");
>             *     this.baz = Objects.nonNull(baz, "baz must not be null");
>             * }
>             * </pre>
>             *
>             * @param obj     the object reference to check for nullity
>             * @param message detail message to be used in the event
>         that a {@code
>             *                NullPointerException} is thrown
>             * @return {@code obj} if not {@code null}
>             * @throws NullPointerException if {@code obj} is {@code null}
>             */
>            public static <T> T nonNull(T obj, String message) {
>                if (obj == null)
>                    throw new NullPointerException(message);
>                return obj;
>            }
>
>         They do a great job reducing the verbiage in validity-checking
>         of arguments that must not be null.
>
>
>     I've filed bug 6889858 "Add nonNull methods to java.util.Objects" for
>     these last two methods.  If you want to finish off the engineering
>     need for a changeset, some light tests, etc., I'll file the
>     Sun-internal paperwork for these.
>




More information about the core-libs-dev mailing list