commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <gudnabr...@gmail.com>
Subject Re: ObjectUtils
Date Mon, 08 Jul 2013 18:17:10 GMT
It is unfortunate that most of ArrayUtils' methods do not support varargs
because they were originally created with the array argument first.
 Semantically I think the concept of ArrayUtils#contains(Object, Object...
array) is more sensible anyway.  There is actually no technical reason why
this method and probably some others in ArrayUtils couldn't support both
syntaxes (probably deprecating the old one), but that's probably a
different discussion.

If you don't have an existing array, you can use ArrayUtils#toArray() i.e.
!ArrayUtils.contains(ArrayUtils.toArray(foo, bar, baz), null);  A little
long, but then there are always static imports.  However, it sounds like
you're trying to do something like validate method parameters.  Have you
considered, e.g.:

Validate.noNullElements(Arrays.asList(foo, bar, baz), "some required
argument was null");

?

Matt


On Mon, Jul 8, 2013 at 12:58 PM, Rafael Santini <rafael@santini.eti.br>wrote:

> Hi Matt,
>
> I don't have an array of objects. I have some variables that need to be
> checked whether are null or not.
>
>
> if (obj1 != null && obj2 != null && obj3 != null && obj4 != null)
{
>   // Do something...
> }
>
> To use ArrayUtils.contations(), I need to code something like:
>
> if (ArrayUtils.contains(new Object[] {obj1, obj2, obj3, obj4}, null) ==
> false) {
>    // Do something...
> }
>
> This example is related to some business code that I'm refactoring. In
> general, I need to check few objects.
>
> I'm worry about readability. So, I think that isNotNull(obj1, obj2, obj3,
> obj4) is more clear and is so readable like String.isNotBlank() that I use
> a lot.
>
>
> Rafael Santini
>
> -----Mensagem Original----- From: Matt Benson
> Sent: Monday, July 08, 2013 2:16 PM
> To: Commons Developers List
> Subject: Re: ObjectUtils
>
>
> I don't know exactly why this thread is getting split, but I think several
> of us are taking the implicit position that we shouldn't necessarily
> include a separate utility method for things that can be accomplished with
> existing utility methods.  It's arguably best that these (and any?) classes
> be kept as lean as possible.  The comparison to StringUtils methods is a
> little inept IMO; you are dealing with multiple object references, and
> attempting to present them with a varargs API.  The implication, then, is
> that arrays, rather than objects, are the relevant concept.  That puts us
> into the realm of the ArrayUtils class.  From a semantic standpoint, I
> would be concerned by a method e.g. ArrayUtils#isNotNull(Object... array).
> "is" is a singular verb and my inclination would be to think of the array
> itself as the object of that verb.  Is the array not null?  That check is
> of course more easily and efficiently accomplished with `array != null`.
> You could then opt to name the method something like
> ArrayUtils#**containsNoNullElements(Object.**.. array) but then, again,
> you can
> just as clearly, and in fewer characters, use `!ArrayUtils.contains(array,
> null)`.  Does that make sense?
>
> Matt
>
>
> On Mon, Jul 8, 2013 at 12:01 PM, Rafael Santini <rafael@santini.eti.br
> >wrote:
>
>  Hi,
>>
>> The proposed method is related to objects. As we have
>> StringUtils.isBlank(), isNotBlank(), isEmpty() etc., the
>> ObjectUtils.isNotNull(Object..****. objs) is intended to check if all
>>
>> objects are not null. So, instead of
>>
>>
>> if (obj1 != null && obj2 != null && obj3 != null && obj4
!= null) {
>>    // Do something...
>> }
>>
>> we have
>>
>> if (isNotNull(obj1, obj2, obj3, obj4) {
>>    // Do something...
>> }
>>
>> The StringUtils.firstNonNull() returns the first object that is not null
>> (equivalent to something that returns true if there is at least one object
>> that is not null). The isNotNull() returns true if all objects are not
>> null.
>>
>> Rafael Santini
>>
>> -----Mensagem Original----- From: Matt Benson
>> Sent: Monday, July 08, 2013 1:20 PM
>>
>> To: Commons Developers List
>> Subject: Re: Lang: ObjectUtils
>>
>> WRT #firstNonNull, I don't know why I couldn't find it before.  I do now,
>> and I agree it would seem to fit better in ArrayUtils.
>>
>> Matt
>>
>>
>> On Mon, Jul 8, 2013 at 10:04 AM, Jörg Schaible
>> <Joerg.Schaible@scalaris.com>****wrote:
>>
>>  Hi Matt,
>>
>>>
>>> Matt Benson wrote:
>>>
>>> > On Mon, Jul 8, 2013 at 8:22 AM, Jörg Schaible
>>> > <Joerg.Schaible@scalaris.com>****wrote:
>>>
>>> >
>>> >> Hi Hen,
>>> >>
>>> >> Henri Yandell wrote:
>>> >>
>>> >> > I don't see any value having the first two methods - replacing
the
>>> '=='
>>> >> > sign is a bit too far in the 'provide simple methods' direction
I
>>> think
>>> >> :)
>>> >> >
>>> >> > I think the third method is already in Lang as:
>>> >> >
>>> >> >     ArrayUtils.contains(array, null);
>>> >>
>>> >>
>>> >> Well, no, this is not, what the method does!
>>> >
>>> >
>>> > Correct, but to be fair, it's simple enough to use this method to
>>> > implement
>>> > the desired check.  Negate the result.
>>> >
>>> >
>>> >> With Lang we could use now:
>>> >>
>>> >>     ObjectUtils.firstNotNull(****array) != null
>>>
>>> >>
>>> >
>>> > I don't see such a method as this.
>>>
>>>
>>> http://commons.apache.org/****proper/commons-lang/javadocs/****<http://commons.apache.org/**proper/commons-lang/javadocs/**>
>>> api-release/org/apache/****commons/lang3/ObjectUtils.****
>>> html#firstNonNull(T<http://**commons.apache.org/proper/**
>>> commons-lang/javadocs/api-**release/org/apache/commons/**
>>> lang3/ObjectUtils.html#**firstNonNull(T<http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/ObjectUtils.html#firstNonNull(T>
>>> >
>>>
>>> ..
>>> .)
>>>
>>> > If it did exist, it still wouldn't
>>> > implement the feature requested (check that no element of the array is
>>> > null).  I'm pretty sure !ArrayUtils.contains(array, null) is fine.
>>>
>>> I've re-read the original code and you're right.
>>>
>>> - Jörg
>>>
>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: dev-unsubscribe@commons.**apac**he.org<http://apache.org>
>>> <dev-unsubscribe@**commons.apache.org<dev-unsubscribe@commons.apache.org>
>>> >
>>>
>>>
>>> For additional commands, e-mail: dev-help@commons.apache.org
>>>
>>>
>>>
>>>
>> ------------------------------****----------------------------**
>> --**---------
>> To unsubscribe, e-mail: dev-unsubscribe@commons.**apac**he.org<http://apache.org>
>> <dev-unsubscribe@**commons.apache.org<dev-unsubscribe@commons.apache.org>
>> >
>>
>>
>> For additional commands, e-mail: dev-help@commons.apache.org
>>
>>
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: dev-unsubscribe@commons.**apache.org<dev-unsubscribe@commons.apache.org>
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message