� �Thanks,

 � �Josh


On Thu, Oct 8, 2009 at 6:21 PM, Joe Darcy <Joe.Darcy@sun.com Joe.Darcy@sun.com>> wrote:
">

(original) (raw)

Joe,


Thanks very much!

�� � � �Josh

On Tue, Oct 13, 2009 at 11:12 AM, Joseph D. Darcy <Joe.Darcy@sun.com> wrote:

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@sun.com Joe.Darcy@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:
� � � � � �\*

� � � � � �\* public Foo(Bar bar) {
� � � � � �\* � � this.bar = Objects.nonNull(bar);
� � � � � �\* }
� � � � � �\*

� � � � � �\*
� � � � � �\* @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 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:
� � � � � �\*

� � � � � �\* 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");
� � � � � �\* }
� � � � � �\*

� � � � � �\*
� � � � � �\* @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 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.