Hi Stian, thx for ur +1
The rational behind equalsOneOf(null, null)== false, is that a) all or most methods in this class with varargs==null result in false b) it also enforce the notion of the name, that i'm comparing against a "collection of values" and this collection is set up by me in source code right now. For other cases, where i already have an array or know its just one var i wouldnt need this and could use Objects.equals() or ArrayUtils.contains(). For the latter i now can use this new method as well. tom > Stian Soiland-Reyes <st...@apache.org> hat am 7. August 2016 um 07:42 > geschrieben: > > +1 for the proposal! > > I think ObjectUtils is a good home, the implied array or collection is an > implementation detail. > > What is your reasoning for null != null ? > > If you accept a Function to compare with, that would break the varargs > mechanism (or always require a Function), perhaps such a function could > have a more functional name like firstWhich ? (Which first argument is a > selector function) > > On 6 Aug 2016 10:43 p.m., "thomas menzel" <d...@tomsit.de> wrote: > > Hi folks, > > I'm proposing a new function on ObjectsUtils: > > /** > > * Checks if the given {@code ref} is contained at least once in > > * {@code others}. If {@code} is null or empty then {@code false} is > > * returned. > > * > > * This is a more readable replacement for the idiomatic: > > * {@code Arrays.asList(others).contains(ref)}. > > * > > * > > * ObjectUtils.equalsOneOf(1, 2, 1)) = true > > * ObjectUtils.equalsOneOf(1, 1, 2)) = true > > * ObjectUtils.equalsOneOf(1, null, 1)) = true > > * ObjectUtils.equalsOneOf(null, 1, null)) = true > > * ObjectUtils.equalsOneOf("b", "a b c".split(" "))) = true > > * ObjectUtils.equalsOneOf(null, null)) = false > > * ObjectUtils.equalsOneOf(1, null)) = false > > * ObjectUtils.equalsOneOf(null, new Object[0])) = false > > * ObjectUtils.equalsOneOf(1, 2, 3)) = false > > * > > * > > * @param ref > > * the ref value to check the others against > > * @param others > > * the others > > * @return true, iff {@code ref} is contained at least once in > > * {@code others} > > * @since 3.5 > > */ > > public static boolean equalsOneOf(final Object ref, final Object... > others) { > > return ArrayUtils.isNotEmpty(others) && > ArrayUtils.contains(others, ref); > > } > > Use Case: > > comparing a value to several others in a condition thus avoiding the often > seen > > Other1.equals(string) || Other2.equals(string) || . > > Since this is a shorthand for the above, the OTHER values are usually not in > a collection, e.g. > > ObjectUtils.equalsOneOf(e, FooEnum.X, FooEnum.Y ); > > ObjectUtils.equalsOneOf(string, "A", "B", "C"); > > One could also accomplish the same thing with: > > Arrays.asList(Other1, Other2, ..).contains(ref) but this is less readable > and also the List is created needlessly. > > Note, there is a similar function on StringUtils: > > containsAny(CharSequence cs, CharSequence... > searchCharSequences) > > but obviously only for Strings and doing the "conains" check vs. the > proposed equals-check. > > The code for the function is in the last commit of the fork and includes a > full unit test: > > https://github.com/elonderin/commons-lang-equalsOneOf > > As a bonus I have also added the companion functions in the same commit: > > public static boolean allNull(final Object... values) > > public static boolean anyNull(final Object... values) > > which is in the same vain as isNull/isNotNull etc. to promote readability. > > Also with unit tests. > > Hope u like these and add them to the grand collection of util functions. > > Thomas Menzel --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org