From 527b0f09809dcb4098e27109dac82b2dbc9ea31c Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Fri, 23 Aug 2024 18:31:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 ++ .../annotation/UnsupportedOperation.java | 10 ++ .../plusone/commons/util/ArrayTools.java | 118 +++++++++++++++++- .../plusone/commons/util/EnumTools.java | 10 +- 4 files changed, 144 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index e565e69..39a0400 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,18 @@ 5.9.2 test + + org.junit.jupiter + junit-jupiter-engine + 5.9.2 + test + + + org.junit.jupiter + junit-jupiter-params + 5.9.2 + test + org.projectlombok diff --git a/src/main/java/xyz/zhouxy/plusone/commons/annotation/UnsupportedOperation.java b/src/main/java/xyz/zhouxy/plusone/commons/annotation/UnsupportedOperation.java index 9afdb9e..dbc3fc8 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/annotation/UnsupportedOperation.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/annotation/UnsupportedOperation.java @@ -6,6 +6,16 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.annotation.Documented; +/** + * UnsupportedOperation + * + *

标识方法为不支持的操作。该方法将抛出 {@link UnsupportedOperationException}。 + * + * @author zhouxy + * @version 1.0 + * @since 1.0 + * @see UnsupportedOperationException + */ @Documented @Target({ ElementType.CONSTRUCTOR, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) 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 ba4a790..95a8e65 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/ArrayTools.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/ArrayTools.java @@ -30,68 +30,147 @@ public class ArrayTools { // isNullOrEmpty + /** + * 检查给定数组是否为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @param 数组中元素的类型 + * @return 如果数组为 {@code null} 或长度为 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNullOrEmpty(@Nullable T[] arr) { return arr == null || arr.length == 0; } // isNullOrEmpty - float + /** + * 检查给定数组是否为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组为 {@code null} 或长度为 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNullOrEmpty(@Nullable float[] arr) { return arr == null || arr.length == 0; } // isNullOrEmpty - double + /** + * 检查给定数组是否为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组为 {@code null} 或长度为 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNullOrEmpty(@Nullable double[] arr) { return arr == null || arr.length == 0; } // isNullOrEmpty - byte + /** + * 检查给定数组是否为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组为 {@code null} 或长度为 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNullOrEmpty(@Nullable byte[] arr) { return arr == null || arr.length == 0; } // isNullOrEmpty - long + /** + * 检查给定数组是否为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组为 {@code null} 或长度为 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNullOrEmpty(@Nullable long[] arr) { return arr == null || arr.length == 0; } // isNullOrEmpty - int + /** + * 检查给定数组是否为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组为 {@code null} 或长度为 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNullOrEmpty(@Nullable int[] arr) { return arr == null || arr.length == 0; } // isNotEmpty - + /** + * 检查给定数组是否不为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @param 数组中元素的类型 + * @return 如果数组不为 {@code null} 且长度大于 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNotEmpty(@Nullable T[] arr) { return arr != null && arr.length > 0; } // isNotEmpty - float + /** + * 检查给定数组是否不为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组不为 {@code null} 且长度大于 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNotEmpty(@Nullable float[] arr) { return arr != null && arr.length > 0; } // isNotEmpty - double + /** + * 检查给定数组是否不为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组不为 {@code null} 且长度大于 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNotEmpty(@Nullable double[] arr) { return arr != null && arr.length > 0; } // isNotEmpty - byte + /** + * 检查给定数组是否不为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组不为 {@code null} 且长度大于 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNotEmpty(@Nullable byte[] arr) { return arr != null && arr.length > 0; } // isNotEmpty - long + /** + * 检查给定数组是否不为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组不为 {@code null} 且长度大于 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNotEmpty(@Nullable long[] arr) { return arr != null && arr.length > 0; } // isNotEmpty - int + /** + * 检查给定数组是否不为空 + * + * @param arr 待检查的数组,可以为 {@code null} + * @return 如果数组不为 {@code null} 且长度大于 0,则返回 {@code true};否则返回 {@code false} + */ public static boolean isNotEmpty(@Nullable int[] arr) { return arr != null && arr.length > 0; } // concat + /** + * 拼接多个数组 + * + * @param arrays 数组集合,可以为 {@code null} + * @return 拼接后的数组 + */ public static float[] concatFloatArray(@Nullable Collection arrays) { if (arrays == null || arrays.isEmpty()) { return new float[0]; @@ -106,6 +185,12 @@ public class ArrayTools { return result; } + /** + * 拼接多个数组 + * + * @param arrays 数组集合,可以为 {@code null} + * @return 拼接后的数组 + */ public static double[] concatDoubleArray(@Nullable Collection arrays) { if (arrays == null || arrays.isEmpty()) { return new double[0]; @@ -120,6 +205,12 @@ public class ArrayTools { return result; } + /** + * 拼接多个数组 + * + * @param arrays 数组集合,可以为 {@code null} + * @return 拼接后的数组 + */ public static byte[] concatByteArray(@Nullable Collection arrays) { if (arrays == null || arrays.isEmpty()) { return new byte[0]; @@ -134,6 +225,12 @@ public class ArrayTools { return result; } + /** + * 拼接多个数组 + * + * @param arrays 数组集合,可以为 {@code null} + * @return 拼接后的数组 + */ public static long[] concatLongArray(@Nullable Collection arrays) { if (arrays == null || arrays.isEmpty()) { return new long[0]; @@ -148,6 +245,12 @@ public class ArrayTools { return result; } + /** + * 拼接多个数组 + * + * @param arrays 数组集合,可以为 {@code null} + * @return 拼接后的数组 + */ public static int[] concatIntArray(@Nullable Collection arrays) { if (arrays == null || arrays.isEmpty()) { return new int[0]; @@ -162,15 +265,28 @@ public class ArrayTools { return result; } + /** + * 将集合中的数组连接为一个列表 + * + * @param arrays 可能包含多个数组的集合,这些数组中的元素将被连接到一个列表中 + * @param 泛型参数,表示数组的元素类型 + * @return 返回连接后的列表,如果输入的集合为空或包含空数组,则返回空列表 + */ public static List concatToList(@Nullable Collection arrays) { + // 如果输入的集合是否为空,则直接返回一个空列表 if (arrays == null || arrays.isEmpty()) { return Collections.emptyList(); } + + // 计算所有数组的总长度,用于初始化列表的容量 final int length = arrays.stream().mapToInt(a -> a.length).sum(); final List result = new ArrayList<>(length); + for (T[] arr : arrays) { Collections.addAll(result, arr); } + + // 返回连接后的列表 return result; } diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java index 9aa9d94..f77d7c2 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java @@ -43,7 +43,7 @@ public final class EnumTools { * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E valueOf(Class clazz, int ordinal) { + public static > E valueOf(Class clazz, int ordinal) { // NOSONAR 该方法弃用,但不删掉 Preconditions.checkNotNull(clazz, "Clazz must not be null."); E[] values = clazz.getEnumConstants(); PreconditionsExt.check((ordinal >= 0 && ordinal < values.length), @@ -62,7 +62,7 @@ public final class EnumTools { * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E valueOf(Class clazz, @Nullable Integer ordinal, E defaultValue) { + public static > E valueOf(Class clazz, @Nullable Integer ordinal, E defaultValue) { // NOSONAR 该方法弃用,但不删掉 if (null == ordinal) { return defaultValue; } @@ -80,7 +80,7 @@ public final class EnumTools { * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E getValueOrDefault( + public static > E getValueOrDefault( // NOSONAR 该方法弃用,但不删掉 Class clazz, @Nullable Integer ordinal, Supplier defaultValue) { @@ -100,7 +100,7 @@ public final class EnumTools { * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E getValueOrDefault(Class clazz, @Nullable Integer ordinal) { + public static > E getValueOrDefault(Class clazz, @Nullable Integer ordinal) { // NOSONAR 该方法弃用,但不删掉 return getValueOrDefault(clazz, ordinal, () -> { Preconditions.checkNotNull(clazz, "Clazz must not be null."); E[] values = clazz.getEnumConstants(); @@ -118,7 +118,7 @@ public final class EnumTools { * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E getValueNullable(Class clazz, @Nullable Integer ordinal) { + public static > E getValueNullable(Class clazz, @Nullable Integer ordinal) { // NOSONAR 该方法弃用,但不删掉 return valueOf(clazz, ordinal, null); }