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.da...@sun.com
<mailto:joe.da...@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.