From 88f96c711653e709a10e94dc7f234448e525bd06 Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Fri, 11 Oct 2024 17:14:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20ArrayTools#isAllElementsNo?= =?UTF-8?q?tNull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plusone/commons/util/ArrayTools.java | 31 +++++++++++++++++-- .../plusone/commons/util/ArrayToolsTests.java | 20 ++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 src/test/java/xyz/zhouxy/plusone/commons/util/ArrayToolsTests.java 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)); + } +}