From 9ad82bdb57c8cfef13cac82fb2f5c8cafe4166be Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Wed, 2 Apr 2025 14:28:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor!:=20RegexTools=20=E4=B8=AD=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20ArrayTools#isAllElementsNotNull=20=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING CHANGE: 数组为 `null` 时,不抛出 `NullPointerException`,而是 `IllegalArgumentException`。 --- .../plusone/commons/util/RegexTools.java | 29 +++++-------------- .../plusone/commons/util/RegexToolsTests.java | 2 +- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/RegexTools.java b/src/main/java/xyz/zhouxy/plusone/commons/util/RegexTools.java index e30688f..ddd502d 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/RegexTools.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/RegexTools.java @@ -18,7 +18,6 @@ package xyz.zhouxy.plusone.commons.util; import java.util.Arrays; import java.util.Map; -import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -70,8 +69,7 @@ public final class RegexTools { * @return {@link Pattern} 实例数组 */ public static Pattern[] getPatterns(final String[] patterns, final boolean cachePattern) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); return cachePattern ? cacheAndGetPatternsInternal(patterns) : getPatternsInternal(patterns); @@ -84,8 +82,7 @@ public final class RegexTools { * @return {@link Pattern} 实例数组 */ public static Pattern[] getPatterns(final String[] patterns) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); return getPatternsInternal(patterns); } @@ -109,8 +106,7 @@ public final class RegexTools { * @return 判断结果 */ public static boolean matchesOne(@Nullable final CharSequence input, final Pattern[] patterns) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); return matchesOneInternal(input, patterns); } @@ -122,8 +118,7 @@ public final class RegexTools { * @return 判断结果 */ public static boolean matchesAll(@Nullable final CharSequence input, final Pattern[] patterns) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); return matchesAllInternal(input, patterns); } @@ -166,8 +161,7 @@ public final class RegexTools { */ public static boolean matchesOne(@Nullable final CharSequence input, final String[] patterns, final boolean cachePattern) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); final Pattern[] patternSet = cachePattern ? cacheAndGetPatternsInternal(patterns) : getPatternsInternal(patterns); @@ -182,8 +176,7 @@ public final class RegexTools { * @return 判断结果 */ public static boolean matchesOne(@Nullable final CharSequence input, final String[] patterns) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); final Pattern[] patternSet = getPatternsInternal(patterns); return matchesOneInternal(input, patternSet); } @@ -198,8 +191,7 @@ public final class RegexTools { */ public static boolean matchesAll(@Nullable final CharSequence input, final String[] patterns, final boolean cachePattern) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); final Pattern[] patternSet = cachePattern ? cacheAndGetPatternsInternal(patterns) : getPatternsInternal(patterns); @@ -214,8 +206,7 @@ public final class RegexTools { * @return 判断结果 */ public static boolean matchesAll(@Nullable final CharSequence input, final String[] patterns) { - AssertTools.checkNotNull(patterns); - AssertTools.checkArgument(allNotNull(patterns)); + AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns)); final Pattern[] patternSet = getPatternsInternal(patterns); return matchesAllInternal(input, patternSet); } @@ -347,10 +338,6 @@ public final class RegexTools { .allMatch(pattern -> pattern.matcher(input).matches()); } - private static boolean allNotNull(T[] array) { - return Arrays.stream(array).allMatch(Objects::nonNull); - } - private RegexTools() { // 不允许实例化 throw new IllegalStateException("Utility class"); diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java index b8fef08..673039b 100644 --- a/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java +++ b/src/test/java/xyz/zhouxy/plusone/commons/util/RegexToolsTests.java @@ -75,7 +75,7 @@ class RegexToolsTests { @Test void getPatterns_NullPatterns_ThrowsException() { - assertThrows(NullPointerException.class, () -> { + assertThrows(IllegalArgumentException.class, () -> { RegexTools.getPatterns(null, true); }); }