diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/ArrayTools.java b/src/main/java/xyz/zhouxy/plusone/commons/util/ArrayTools.java index 9297b48..5c416f4 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/ArrayTools.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/ArrayTools.java @@ -21,11 +21,9 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.google.common.annotations.Beta; - -@Beta public class ArrayTools { // isNullOrEmpty @@ -163,6 +161,33 @@ public class ArrayTools { return arr != null && arr.length > 0; } + // isAllElementsNotNull + + /** + * 判断数组的所有元素是否都不为空: + *
    + *
  1. 数组为 {@code null}:抛出异常,因为传入 {@code null} 通常被视为编程错误。 + *
  2. 数组不为 {@code null} 但长度为 0:在这种情况下,通常认为数组中的所有元素都不为 {@code null},因此返回 {@code null}。 + *
  3. 数组中有至少一个元素为 {@code null}:返回 {@code false}。 + *
  4. 数组中所有元素都不为 {@code null}:返回 {@code true}。 + *
+ * + * @param 数组元素的类型 + * @param arr 待检查的数组。不为 {@code null} + * @return 如果数组的所有元素都不为 {@code null},则返回 {@code true};否则返回 {@code false} + * + * @throws IllegalArgumentException 当参数为空时抛出 + */ + public static boolean isAllElementsNotNull(@Nonnull final T[] arr) { + AssertTools.checkParameter(arr != null, "The array cannot be null."); + for (T element : arr) { + if (element == null) { + return false; + } + } + return true; + } + // concat /** diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java new file mode 100644 index 0000000..e2f12c5 --- /dev/null +++ b/src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java @@ -0,0 +1,20 @@ +package xyz.zhouxy.plusone.commons.util; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +@SuppressWarnings("all") +public class ArrayToolsTests { + @Test + void testIsAllNotNull() { + assertTrue(ArrayTools.isAllElementsNotNull(new Object[] { 1L, 2, 3.0, "Java" })); + assertFalse(ArrayTools.isAllElementsNotNull(new Object[] { 1L, 2, 3.0, "Java", null })); + assertFalse(ArrayTools.isAllElementsNotNull(new Object[] { null, 1L, 2, 3.0, "Java" })); + assertTrue(ArrayTools.isAllElementsNotNull(new Object[] {})); + assertThrows(IllegalArgumentException.class, + () -> ArrayTools.isAllElementsNotNull(null)); + } +}