diff --git a/pom.xml b/pom.xml
index 994ed99..9ebd1b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,19 +14,38 @@
1.8
1.18.24
2.13.4
+ 3.0.2
+ 31.1-jre
- org.projectlombok
- lombok
- ${lombok.version}
- true
+ com.google.code.findbugs
+ jsr305
+ ${google-jsr305.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
com.fasterxml.jackson.core
jackson-annotations
${jackson.version}
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ true
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.9.2
+ test
+
\ No newline at end of file
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java b/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java
index 9efcf24..9c09f6f 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.constant;
import java.util.regex.Pattern;
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java b/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java
index 2daf331..2601c2a 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.constant;
/**
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java b/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java
index 87cf1d7..1e4e930 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.exception;
/**
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java b/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java
index 8671f54..d061c36 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.exception;
/**
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java b/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java
index 829dbb2..95eb458 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
public abstract class Arrays2 {
@@ -31,6 +47,14 @@ public abstract class Arrays2 {
return values;
}
+ public static double[] of(final double... values) {
+ return values;
+ }
+
+ public static float[] of(final float... values) {
+ return values;
+ }
+
private Arrays2() {
throw new IllegalStateException("Utility class");
}
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java
index 832d270..7135319 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
import java.util.Objects;
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java b/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java
index f94a4a8..b1255d3 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
import java.util.Map;
@@ -43,9 +59,7 @@ public abstract class Enumeration> {
@Override
public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("[").append(value).append(": ").append(name).append("]");
- return builder.toString();
+ return "[" + value + ": " + name + "]";
}
protected static final class EnumerationValuesHolder> {
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java b/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java
index 7078ba3..088e005 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
/**
@@ -11,7 +27,15 @@ public class NumberUtil {
throw new IllegalStateException("Utility class");
}
- public static int sum(int... numbers) {
+ public static int sum(short... numbers) {
+ int result = 0;
+ for (short number : numbers) {
+ result += number;
+ }
+ return result;
+ }
+
+ public static long sum(int... numbers) {
int result = 0;
for (int number : numbers) {
result += number;
@@ -26,4 +50,20 @@ public class NumberUtil {
}
return result;
}
+
+ public static double sum(float... numbers) {
+ double result = 0;
+ for (double number : numbers) {
+ result += number;
+ }
+ return result;
+ }
+
+ public static double sum(double... numbers) {
+ double result = 0;
+ for (double number : numbers) {
+ result += number;
+ }
+ return result;
+ }
}
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java b/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java
index 9fa076a..fbd265a 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
import java.util.List;
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java b/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java
index 9dadeca..fb15ca6 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
import java.util.Arrays;
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java b/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java
index 0b0df2d..e9d1689 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
import java.util.regex.Pattern;
diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java b/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java
index 674d77f..4f09d6e 100644
--- a/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java
+++ b/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2022-2023 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.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xyz.zhouxy.plusone.commons.util;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/EnumerationTests.java b/src/test/java/xyz/zhouxy/plusone/commons/EnumerationTests.java
new file mode 100644
index 0000000..6e950a7
--- /dev/null
+++ b/src/test/java/xyz/zhouxy/plusone/commons/EnumerationTests.java
@@ -0,0 +1,39 @@
+package xyz.zhouxy.plusone.commons;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.Test;
+
+import xyz.zhouxy.plusone.commons.util.Enumeration;
+
+class EnumerationTests {
+
+ @Test
+ void testEnumeration() {
+ assertEquals(EntityStatus.AVAILABLE, EntityStatus.of(0));
+ }
+}
+
+final class EntityStatus extends Enumeration {
+
+ private EntityStatus(int value, String name) {
+ super(value, name);
+ }
+
+ // 常量
+ public static final EntityStatus AVAILABLE = new EntityStatus(0, "正常");
+ public static final EntityStatus DISABLED = new EntityStatus(1, "禁用");
+
+ private static final EnumerationValuesHolder ENUMERATION_VALUES = new EnumerationValuesHolder<>(
+ AVAILABLE,
+ DISABLED);
+
+ public static EntityStatus of(int value) {
+ return ENUMERATION_VALUES.get(value);
+ }
+
+ @Override
+ public String toString() {
+ return "EntityStatus" + super.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/NumberUtilTest.java b/src/test/java/xyz/zhouxy/plusone/commons/util/NumberUtilTest.java
new file mode 100644
index 0000000..f330013
--- /dev/null
+++ b/src/test/java/xyz/zhouxy/plusone/commons/util/NumberUtilTest.java
@@ -0,0 +1,35 @@
+package xyz.zhouxy.plusone.commons.util;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+
+class NumberUtilTest {
+ @Test
+ void testSum() {
+ long result = 0;
+ for (int i = 0; i < Integer.MAX_VALUE; i++) {
+ result += Short.MAX_VALUE;
+ }
+ System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE);
+ System.out.println("result: " + result);
+ assertFalse(Integer.MAX_VALUE > result);
+
+ result = 0;
+ for (int i = 0; i < Integer.MAX_VALUE; i++) {
+ result += Short.MAX_VALUE;
+ }
+ System.out.println("Long.MAX_VALUE: " + Long.MAX_VALUE);
+ System.out.println("result: " + result);
+ assertTrue(Long.MAX_VALUE > result);
+
+ result = 0;
+ for (int i = 0; i < Integer.MAX_VALUE; i++) {
+ result += Integer.MAX_VALUE;
+ }
+ System.out.println("Long.MAX_VALUE: " + Long.MAX_VALUE);
+ System.out.println("result: " + result);
+ assertTrue(Long.MAX_VALUE > result);
+ }
+}