Introduce general purpose isEmpty() method in ObjectUtils
Prior to this commit, there existed several isEmpty() methods scattered across various utilities such as ObjectUtils, CollectionUtils, and StringUtils; however, each of these methods requires a cast to the type supported for that particular variant. This commit introduces a general-purpose isEmpty(Object) method in ObjectUtils that transparently supports multiple object types in a central location without the need for casts or juggling multiple utility classes. Issue: SPR-13119
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -18,10 +18,13 @@ package org.springframework.util;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Miscellaneous object utility methods.
|
||||
* Mainly for internal use within the framework.
|
||||
*
|
||||
* <p>Mainly for internal use within the framework.
|
||||
*
|
||||
* <p>Thanks to Alex Ruiz for contributing several enhancements to this class!
|
||||
*
|
||||
@@ -30,7 +33,11 @@ import java.util.Arrays;
|
||||
* @author Rod Johnson
|
||||
* @author Rob Harrop
|
||||
* @author Chris Beams
|
||||
* @author Sam Brannen
|
||||
* @since 19.03.2004
|
||||
* @see ClassUtils
|
||||
* @see CollectionUtils
|
||||
* @see StringUtils
|
||||
*/
|
||||
public abstract class ObjectUtils {
|
||||
|
||||
@@ -92,11 +99,55 @@ public abstract class ObjectUtils {
|
||||
* Determine whether the given array is empty:
|
||||
* i.e. {@code null} or of zero length.
|
||||
* @param array the array to check
|
||||
* @see #isEmpty(Object)
|
||||
*/
|
||||
public static boolean isEmpty(Object[] array) {
|
||||
return (array == null || array.length == 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the given object is empty.
|
||||
* <p>This method supports the following object types.
|
||||
* <ul>
|
||||
* <li>{@code Array}: considered empty if its length is zero</li>
|
||||
* <li>{@link CharSequence}: considered empty if its length is zero</li>
|
||||
* <li>{@link Collection}: delegates to {@link Collection#isEmpty()}</li>
|
||||
* <li>{@link Map}: delegates to {@link Map#isEmpty()}</li>
|
||||
* </ul>
|
||||
* <p>If the given object is non-null and not one of the aforementioned
|
||||
* supported types, this method returns {@code false}.
|
||||
* @param obj the object to check
|
||||
* @return {@code true} if the object is {@code null} or <em>empty</em>
|
||||
* @since 4.2
|
||||
* @see ObjectUtils#isEmpty(Object[])
|
||||
* @see StringUtils#hasLength(CharSequence)
|
||||
* @see StringUtils#isEmpty(Object)
|
||||
* @see CollectionUtils#isEmpty(java.util.Collection)
|
||||
* @see CollectionUtils#isEmpty(java.util.Map)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public static boolean isEmpty(Object obj) {
|
||||
if (obj == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (obj.getClass().isArray()) {
|
||||
return Array.getLength(obj) == 0;
|
||||
}
|
||||
if (obj instanceof CharSequence) {
|
||||
return ((CharSequence) obj).length() == 0;
|
||||
}
|
||||
if (obj instanceof Collection) {
|
||||
return ((Collection) obj).isEmpty();
|
||||
}
|
||||
if (obj instanceof Map) {
|
||||
return ((Map) obj).isEmpty();
|
||||
}
|
||||
|
||||
// else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the given array contains the given element.
|
||||
* @param array the array to check (may be {@code null},
|
||||
|
||||
Reference in New Issue
Block a user