This commit is contained in:
Looly 2023-04-23 22:40:36 +08:00
parent e483ed9938
commit 06e091fc4a
130 changed files with 575 additions and 203 deletions

View File

@ -356,7 +356,7 @@ public class ArrayUtil extends PrimitiveArrayUtil {
/** /**
* 返回数组中第一个匹配规则的值的位置 * 返回数组中第一个匹配规则的值的位置
* *
* @param <T> 数组元素类型 * @param <E> 数组元素类型
* @param matcher 匹配接口实现此接口自定义匹配规则 * @param matcher 匹配接口实现此接口自定义匹配规则
* @param beginIndexInclude 检索开始的位置不能为负数 * @param beginIndexInclude 检索开始的位置不能为负数
* @param array 数组 * @param array 数组
@ -364,11 +364,12 @@ public class ArrayUtil extends PrimitiveArrayUtil {
* @since 5.7.3 * @since 5.7.3
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> int matchIndex(final int beginIndexInclude, final Predicate<T> matcher, final T... array) { public static <E> int matchIndex(final int beginIndexInclude, final Predicate<E> matcher, final E... array) {
if (isEmpty(array)) { if (isEmpty(array)) {
return INDEX_NOT_FOUND; return INDEX_NOT_FOUND;
} }
return ArrayWrapper.of(array).matchIndex(beginIndexInclude, matcher); final ArrayWrapper<E[], E> arrayWrapper = ArrayWrapper.of(array);
return arrayWrapper.matchIndex(beginIndexInclude, matcher);
} }
/** /**
@ -590,7 +591,7 @@ public class ArrayUtil extends PrimitiveArrayUtil {
* @return 新数组或原有数组 * @return 新数组或原有数组
* @since 5.7.23 * @since 5.7.23
*/ */
public static <A> A replace(final A array, final int index, final Object values) { public static <A> A replace(final A array, final int index, final A values) {
if (isEmpty(array)) { if (isEmpty(array)) {
return ofArray(values, null == array ? null : array.getClass().getComponentType()); return ofArray(values, null == array ? null : array.getClass().getComponentType());
} }
@ -1174,14 +1175,15 @@ public class ArrayUtil extends PrimitiveArrayUtil {
* 获取数组对象中指定index的值支持负数例如-1表示倒数第一个值<br> * 获取数组对象中指定index的值支持负数例如-1表示倒数第一个值<br>
* 如果数组下标越界返回null * 如果数组下标越界返回null
* *
* @param <T> 数组元素类型 * @param <E> 数组元素类型
* @param array 数组对象 * @param array 数组对象
* @param index 下标支持负数 * @param index 下标支持负数
* @return * @return
* @since 4.0.6 * @since 4.0.6
*/ */
public static <T> T get(final Object array, final int index) { @SuppressWarnings("unchecked")
return ArrayWrapper.of(array).get(index); public static <E> E get(final Object array, final int index) {
return (E) ArrayWrapper.of(array).get(index);
} }
/** /**

View File

@ -1,5 +1,6 @@
package org.dromara.hutool.core.array; package org.dromara.hutool.core.array;
import org.dromara.hutool.core.collection.iter.ArrayIter;
import org.dromara.hutool.core.convert.Convert; import org.dromara.hutool.core.convert.Convert;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.func.Wrapper; import org.dromara.hutool.core.func.Wrapper;
@ -8,6 +9,7 @@ import org.dromara.hutool.core.util.ObjUtil;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator; import java.util.Comparator;
import java.util.Iterator;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.function.UnaryOperator; import java.util.function.UnaryOperator;
@ -15,12 +17,13 @@ import java.util.function.UnaryOperator;
* 数组包装提供一系列数组方法 * 数组包装提供一系列数组方法
* *
* @param <A> 数组类型 * @param <A> 数组类型
* @param <E> 数组元素类型
* @author looly * @author looly
* @since 6.0.0 * @since 6.0.0
*/ */
public class ArrayWrapper<A> implements Wrapper<A> { public class ArrayWrapper<A, E> implements Wrapper<A>, Iterable<E> {
private final Class<?> componentType; private final Class<E> componentType;
private A array; private A array;
private int length; private int length;
@ -33,8 +36,8 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @return ArrayWrapper * @return ArrayWrapper
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <A> ArrayWrapper<A> of(final Class<?> componentType, final int length) { public static <A, E> ArrayWrapper<A, E> of(final Class<E> componentType, final int length) {
return (ArrayWrapper<A>) of(Array.newInstance(componentType, length)); return (ArrayWrapper<A, E>) of(Array.newInstance(componentType, length));
} }
/** /**
@ -42,9 +45,10 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* *
* @param array 数组非空 * @param array 数组非空
* @param <A> 数组类型 * @param <A> 数组类型
* @param <E> 元素类型
* @return ArrayWrapper * @return ArrayWrapper
*/ */
public static <A> ArrayWrapper<A> of(final A array) { public static <A, E> ArrayWrapper<A, E> of(final A array) {
return new ArrayWrapper<>(array); return new ArrayWrapper<>(array);
} }
@ -53,12 +57,13 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* *
* @param array 数组对象非空 * @param array 数组对象非空
*/ */
@SuppressWarnings("unchecked")
public ArrayWrapper(final A array) { public ArrayWrapper(final A array) {
Assert.notNull(array, "Array must be not null!"); Assert.notNull(array, "Array must be not null!");
if (!ArrayUtil.isArray(array)) { if (!ArrayUtil.isArray(array)) {
throw new IllegalArgumentException("Object is not a array!"); throw new IllegalArgumentException("Object is not a array!");
} }
this.componentType = array.getClass().getComponentType(); this.componentType = (Class<E>) array.getClass().getComponentType();
setNewArray(array); setNewArray(array);
} }
@ -124,12 +129,11 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* 获取数组对象中指定index的值支持负数例如-1表示倒数第一个值<br> * 获取数组对象中指定index的值支持负数例如-1表示倒数第一个值<br>
* 如果数组下标越界返回null * 如果数组下标越界返回null
* *
* @param <E> 数组元素类型
* @param index 下标支持负数-1表示最后一个元素 * @param index 下标支持负数-1表示最后一个元素
* @return * @return
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <E> E get(int index) { public E get(int index) {
final int length = this.length; final int length = this.length;
if (index < 0) { if (index < 0) {
index += length; index += length;
@ -145,21 +149,19 @@ public class ArrayWrapper<A> implements Wrapper<A> {
/** /**
* 返回数组中第一个非空元素 * 返回数组中第一个非空元素
* *
* @param <E> 数组元素类型
* @return 第一个非空元素如果 不存在非空元素 数组为空返回{@code null} * @return 第一个非空元素如果 不存在非空元素 数组为空返回{@code null}
*/ */
public <E> E firstNonNull() { public E firstNonNull() {
return firstMatch(ObjUtil::isNotNull); return firstMatch(ObjUtil::isNotNull);
} }
/** /**
* 返回数组中第一个匹配规则的值 * 返回数组中第一个匹配规则的值
* *
* @param <E> 元素类型
* @param matcher 匹配接口实现此接口自定义匹配规则 * @param matcher 匹配接口实现此接口自定义匹配规则
* @return 第一个匹配元素如果 不存在匹配元素 数组为空返回 {@code null} * @return 第一个匹配元素如果 不存在匹配元素 数组为空返回 {@code null}
*/ */
public <E> E firstMatch(final Predicate<?> matcher) { public E firstMatch(final Predicate<E> matcher) {
final int index = matchIndex(matcher); final int index = matchIndex(matcher);
if (index == ArrayUtil.INDEX_NOT_FOUND) { if (index == ArrayUtil.INDEX_NOT_FOUND) {
return null; return null;
@ -184,7 +186,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param matcher 匹配接口实现此接口自定义匹配规则 * @param matcher 匹配接口实现此接口自定义匹配规则
* @return 第一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到 * @return 第一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
*/ */
public int matchIndex(final Predicate<?> matcher) { public int matchIndex(final Predicate<E> matcher) {
return matchIndex(0, matcher); return matchIndex(0, matcher);
} }
@ -206,7 +208,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param offset 检索开始的位置不能为负数 * @param offset 检索开始的位置不能为负数
* @return 第一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到 * @return 第一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
*/ */
public int matchIndex(final int offset, final Predicate<?> matcher) { public int matchIndex(final int offset, final Predicate<E> matcher) {
if (null == matcher && offset < this.length) { if (null == matcher && offset < this.length) {
return offset; return offset;
} }
@ -238,7 +240,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param matcher 匹配接口实现此接口自定义匹配规则 * @param matcher 匹配接口实现此接口自定义匹配规则
* @return 最后一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到 * @return 最后一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
*/ */
public int matchLastIndex(final Predicate<?> matcher) { public int matchLastIndex(final Predicate<E> matcher) {
return matchLastIndex(length - 1, matcher); return matchLastIndex(length - 1, matcher);
} }
@ -249,7 +251,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param offset 从后向前查找时的起始位置一般为{@code array.length - 1} * @param offset 从后向前查找时的起始位置一般为{@code array.length - 1}
* @return 最后一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到 * @return 最后一个匹配元素的位置{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
*/ */
public int matchLastIndex(final int offset, final Predicate<?> matcher) { public int matchLastIndex(final int offset, final Predicate<E> matcher) {
if (null == matcher && offset >= 0) { if (null == matcher && offset >= 0) {
return offset; return offset;
} }
@ -270,7 +272,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param value 新元素或新数组 * @param value 新元素或新数组
* @return this * @return this
*/ */
public ArrayWrapper<A> setOrAppend(final int index, final Object value) { public ArrayWrapper<A, E> setOrAppend(final int index, final E value) {
if (index < this.length) { if (index < this.length) {
Array.set(array, index, value); Array.set(array, index, value);
} else { } else {
@ -284,11 +286,34 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* 将新元素添加到已有数组中<br> * 将新元素添加到已有数组中<br>
* 添加新元素会生成一个新的数组不影响原数组 * 添加新元素会生成一个新的数组不影响原数组
* *
* @param newElements 新元素或新数组 * @param element 新元素或新数组
* @return 新数组 * @return 新数组
*/ */
public ArrayWrapper<A> append(final Object newElements) { public ArrayWrapper<A, E> append(final E element) {
return insert(this.length, newElements); return insert(this.length, element);
}
/**
* 将新数组追加到已有数组中<br>
* 追加新数组会生成一个新的数组不影响原数组
*
* @param array 需要追加的数组数组
* @return 新数组
*/
public ArrayWrapper<A, E> appendArray(final A array) {
return insertArray(this.length, array);
}
/**
* 将新元素插入到已有数组中的某个位置
* 如果插入位置为负数从原数组从后向前计数若大于原数组长度则空白处用默认值填充<br>
*
* @param index 插入位置支持负数此位置为对应此位置元素之前的空档
* @param element 元素
* @return 新数组
*/
public ArrayWrapper<A, E> insert(final int index, final E element) {
return insertArray(index, createSingleElementArray(element));
} }
/** /**
@ -296,22 +321,17 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* 如果插入位置为负数从原数组从后向前计数若大于原数组长度则空白处用默认值填充<br> * 如果插入位置为负数从原数组从后向前计数若大于原数组长度则空白处用默认值填充<br>
* *
* @param index 插入位置支持负数此位置为对应此位置元素之前的空档 * @param index 插入位置支持负数此位置为对应此位置元素之前的空档
* @param arrayToAppend 新元素 * @param arrayToInsert 新元素数组
* @return 新数组 * @return 新数组
*/ */
@SuppressWarnings({"unchecked", "SuspiciousSystemArraycopy"}) @SuppressWarnings({"unchecked", "SuspiciousSystemArraycopy"})
public ArrayWrapper<A> insert(int index, Object arrayToAppend) { public ArrayWrapper<A, E> insertArray(int index, A arrayToInsert) {
if (!ArrayUtil.isArray(arrayToAppend)) { final int appendLength = ArrayUtil.length(arrayToInsert);
// 用户传入单个元素则创建单元素数组
arrayToAppend = createSingleElementArray(arrayToAppend);
}
final int appendLength = ArrayUtil.length(arrayToAppend);
if (0 == appendLength) { if (0 == appendLength) {
return this; return this;
} }
if (isEmpty()) { if (isEmpty()) {
setNewArray((A) Convert.convert(array.getClass(), arrayToAppend)); setNewArray((A) Convert.convert(array.getClass(), arrayToInsert));
return this; return this;
} }
@ -323,14 +343,14 @@ public class ArrayWrapper<A> implements Wrapper<A> {
// 已有数组的元素类型 // 已有数组的元素类型
// 如果 已有数组的元素类型是 原始类型则需要转换 新元素数组 为该类型避免ArrayStoreException // 如果 已有数组的元素类型是 原始类型则需要转换 新元素数组 为该类型避免ArrayStoreException
if (this.componentType.isPrimitive()) { if (this.componentType.isPrimitive()) {
arrayToAppend = Convert.convert(array.getClass(), arrayToAppend); arrayToInsert = (A) Convert.convert(array.getClass(), arrayToInsert);
} }
final A result = (A) Array.newInstance(this.componentType, Math.max(len, index) + appendLength); final A result = (A) Array.newInstance(this.componentType, Math.max(len, index) + appendLength);
// 原数组到index位置 // 原数组到index位置
System.arraycopy(array, 0, result, 0, Math.min(len, index)); System.arraycopy(array, 0, result, 0, Math.min(len, index));
// 新增的数组追加 // 新增的数组追加
System.arraycopy(arrayToAppend, 0, result, index, appendLength); System.arraycopy(arrayToInsert, 0, result, index, appendLength);
if (index < len) { if (index < len) {
// 原数组剩余部分 // 原数组剩余部分
System.arraycopy(array, index, result, index + appendLength, len - index); System.arraycopy(array, index, result, index + appendLength, len - index);
@ -350,16 +370,11 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* </ul> * </ul>
* *
* @param index 位置 * @param index 位置
* @param values 新值 * @param values 新值或新数组
* @return this * @return this
*/ */
@SuppressWarnings({"unchecked", "SuspiciousSystemArraycopy"}) @SuppressWarnings({"unchecked", "SuspiciousSystemArraycopy"})
public ArrayWrapper<A> replace(final int index, Object values) { public ArrayWrapper<A, E> replace(final int index, final A values) {
if (!ArrayUtil.isArray(values)) {
// 用户传入单个元素则创建单元素数组
values = createSingleElementArray(values);
}
final int valuesLength = ArrayUtil.length(values); final int valuesLength = ArrayUtil.length(values);
if (0 == valuesLength) { if (0 == valuesLength) {
return this; return this;
@ -369,11 +384,11 @@ public class ArrayWrapper<A> implements Wrapper<A> {
} }
if (index < 0) { if (index < 0) {
// 从头部追加 // 从头部追加
return insert(0, values); return insertArray(0, values);
} }
if (index >= length) { if (index >= length) {
// 超出长度尾部追加 // 超出长度尾部追加
return append(values); return appendArray(values);
} }
// 在原数组范围内 // 在原数组范围内
@ -397,7 +412,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param editor 编辑器接口 {@code null}则返回原数组 * @param editor 编辑器接口 {@code null}则返回原数组
* @return this * @return this
*/ */
public ArrayWrapper<A> edit(final UnaryOperator<?> editor) { public ArrayWrapper<A, E> edit(final UnaryOperator<E> editor) {
if (null == array || null == editor) { if (null == array || null == editor) {
return this; return this;
} }
@ -495,7 +510,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @throws NullPointerException 如果数组元素含有null值 * @throws NullPointerException 如果数组元素含有null值
* @since 6.0.0 * @since 6.0.0
*/ */
public boolean isSorted(final Comparator<? super A> comparator) { public boolean isSorted(final Comparator<E> comparator) {
if (isEmpty()) { if (isEmpty()) {
return false; return false;
} }
@ -528,7 +543,7 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param isDESC 是否反序 * @param isDESC 是否反序
* @return 是否有序 * @return 是否有序
*/ */
public boolean isSorted(final Comparator<? super A> comparator, final boolean isDESC) { public boolean isSorted(final Comparator<E> comparator, final boolean isDESC) {
if (null == comparator) { if (null == comparator) {
return false; return false;
} }
@ -546,6 +561,11 @@ public class ArrayWrapper<A> implements Wrapper<A> {
return true; return true;
} }
@Override
public Iterator<E> iterator() {
return new ArrayIter<>(this.array);
}
@Override @Override
public String toString() { public String toString() {
final A array = this.array; final A array = this.array;
@ -599,9 +619,10 @@ public class ArrayWrapper<A> implements Wrapper<A> {
* @param value 元素值 * @param value 元素值
* @return 数组 * @return 数组
*/ */
private Object createSingleElementArray(final Object value) { @SuppressWarnings("unchecked")
private A createSingleElementArray(final E value) {
// 插入单个元素 // 插入单个元素
final Object newInstance = Array.newInstance(this.componentType, 1); final A newInstance = (A) Array.newInstance(this.componentType, 1);
Array.set(newInstance, 0, value); Array.set(newInstance, 0, value);
return newInstance; return newInstance;
} }

View File

@ -20,7 +20,7 @@ import org.dromara.hutool.core.math.NumberUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.io.Serializable; import java.io.Serializable;
import java.util.*; import java.util.*;

View File

@ -16,7 +16,7 @@ import org.dromara.hutool.core.codec.binary.Base16Codec;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ByteUtil; import org.dromara.hutool.core.util.ByteUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import java.awt.Color; import java.awt.Color;

View File

@ -15,7 +15,7 @@ package org.dromara.hutool.core.codec;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;

View File

@ -17,7 +17,7 @@ import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.CharPool; import org.dromara.hutool.core.text.CharPool;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;

View File

@ -16,7 +16,7 @@ import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.util.List; import java.util.List;

View File

@ -25,7 +25,7 @@ import org.dromara.hutool.core.io.stream.FastByteArrayOutputStream;
import org.dromara.hutool.core.io.stream.LimitedInputStream; import org.dromara.hutool.core.io.stream.LimitedInputStream;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ByteUtil; import org.dromara.hutool.core.util.ByteUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;

View File

@ -14,7 +14,7 @@ package org.dromara.hutool.core.convert;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.reflect.TypeUtil; import org.dromara.hutool.core.reflect.TypeUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.io.Serializable; import java.io.Serializable;
import java.lang.reflect.Type; import java.lang.reflect.Type;

View File

@ -23,7 +23,7 @@ import org.dromara.hutool.core.reflect.TypeReference;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.UnicodeUtil; import org.dromara.hutool.core.text.UnicodeUtil;
import org.dromara.hutool.core.util.ByteUtil; import org.dromara.hutool.core.util.ByteUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import java.lang.reflect.Type; import java.lang.reflect.Type;

View File

@ -21,7 +21,7 @@ import org.dromara.hutool.core.reflect.ConstructorUtil;
import org.dromara.hutool.core.reflect.TypeReference; import org.dromara.hutool.core.reflect.TypeReference;
import org.dromara.hutool.core.reflect.TypeUtil; import org.dromara.hutool.core.reflect.TypeUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.util; package org.dromara.hutool.core.data;
import org.dromara.hutool.core.date.DatePattern; import org.dromara.hutool.core.date.DatePattern;
import org.dromara.hutool.core.date.DateTime; import org.dromara.hutool.core.date.DateTime;
@ -19,6 +19,7 @@ import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.regex.PatternPool; import org.dromara.hutool.core.regex.PatternPool;
import org.dromara.hutool.core.lang.Validator; import org.dromara.hutool.core.lang.Validator;
import org.dromara.hutool.core.regex.ReUtil; import org.dromara.hutool.core.regex.ReUtil;
import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import java.io.Serializable; import java.io.Serializable;

View File

@ -13,7 +13,7 @@
package org.dromara.hutool.core.data; package org.dromara.hutool.core.data;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
/** /**
* 数据脱敏Data Masking工具类对某些敏感信息比如身份证号手机号卡号姓名地址邮箱等 屏蔽敏感数据<br> * 数据脱敏Data Masking工具类对某些敏感信息比如身份证号手机号卡号姓名地址邮箱等 屏蔽敏感数据<br>

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang.id; package org.dromara.hutool.core.data.id;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang.id; package org.dromara.hutool.core.data.id;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang.id; package org.dromara.hutool.core.data.id;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang.id; package org.dromara.hutool.core.data.id;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang.id; package org.dromara.hutool.core.data.id;
import org.dromara.hutool.core.date.SystemClock; import org.dromara.hutool.core.date.SystemClock;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang.id; package org.dromara.hutool.core.data.id;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;

View File

@ -16,4 +16,4 @@
* @author looly * @author looly
* @since 5.7.5 * @since 5.7.5
*/ */
package org.dromara.hutool.core.lang.id; package org.dromara.hutool.core.data.id;

View File

@ -13,7 +13,7 @@
/** /**
* 数据相关封装和工具类<br> * 数据相关封装和工具类<br>
* 在Hutool中数据是指社会属性的内容<br> * 在Hutool中数据是指社会属性的内容<br>
* 电话统一社会信用代码密码坐标系数据脱敏等 * ID电话统一社会信用代码密码坐标系数据脱敏等
* *
* @author looly * @author looly
*/ */

View File

@ -18,7 +18,7 @@ import org.dromara.hutool.core.date.DateTime;
import org.dromara.hutool.core.date.format.DefaultDateBasic; import org.dromara.hutool.core.date.format.DefaultDateBasic;
import org.dromara.hutool.core.regex.ReUtil; import org.dromara.hutool.core.regex.ReUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
/** /**
* ISO8601日期字符串JDK的Date对象toString默认格式解析支持格式 * ISO8601日期字符串JDK的Date对象toString默认格式解析支持格式

View File

@ -17,7 +17,7 @@ import org.dromara.hutool.core.date.DatePattern;
import org.dromara.hutool.core.date.DateTime; import org.dromara.hutool.core.date.DateTime;
import org.dromara.hutool.core.date.format.DefaultDateBasic; import org.dromara.hutool.core.date.format.DefaultDateBasic;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
/** /**
* 标准日期字符串解析支持格式 * 标准日期字符串解析支持格式

View File

@ -17,7 +17,7 @@ import org.dromara.hutool.core.map.MapUtil;
import org.dromara.hutool.core.reflect.ConstructorUtil; import org.dromara.hutool.core.reflect.ConstructorUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.io.PrintStream; import java.io.PrintStream;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;

View File

@ -14,7 +14,7 @@ package org.dromara.hutool.core.io;
import org.dromara.hutool.core.collection.iter.ComputeIter; import org.dromara.hutool.core.collection.iter.ComputeIter;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;

View File

@ -14,7 +14,7 @@ package org.dromara.hutool.core.io.buffer;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ByteUtil; import org.dromara.hutool.core.util.ByteUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;

View File

@ -17,7 +17,7 @@ import org.dromara.hutool.core.net.url.URLUtil;
import org.dromara.hutool.core.regex.ReUtil; import org.dromara.hutool.core.regex.ReUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.SystemUtil; import org.dromara.hutool.core.util.SystemUtil;
import java.io.File; import java.io.File;

View File

@ -29,7 +29,7 @@ import org.dromara.hutool.core.regex.ReUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.core.thread.ThreadUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.core.util.SystemUtil; import org.dromara.hutool.core.util.SystemUtil;

View File

@ -18,7 +18,7 @@ import org.dromara.hutool.core.io.IORuntimeException;
import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.IoUtil;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.func.SerConsumer; import org.dromara.hutool.core.func.SerConsumer;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import java.io.File; import java.io.File;

View File

@ -17,7 +17,7 @@ import org.dromara.hutool.core.io.file.PathUtil;
import org.dromara.hutool.core.io.watch.watchers.WatcherChain; import org.dromara.hutool.core.io.watch.watchers.WatcherChain;
import org.dromara.hutool.core.net.url.URLUtil; import org.dromara.hutool.core.net.url.URLUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.io.File; import java.io.File;
import java.net.URI; import java.net.URI;

View File

@ -13,7 +13,7 @@
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import java.util.Scanner; import java.util.Scanner;

View File

@ -13,7 +13,7 @@
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang;
import org.dromara.hutool.core.convert.Convert; import org.dromara.hutool.core.convert.Convert;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -24,6 +24,11 @@ import java.io.Serializable;
*/ */
public interface EnumItem<E extends EnumItem<E>> extends Serializable { public interface EnumItem<E extends EnumItem<E>> extends Serializable {
/**
* 枚举名称
*
* @return 名称
*/
String name(); String name();
/** /**
@ -35,6 +40,11 @@ public interface EnumItem<E extends EnumItem<E>> extends Serializable {
return name(); return name();
} }
/**
* int值
*
* @return int值
*/
int intVal(); int intVal();
/** /**

View File

@ -22,7 +22,7 @@ import org.dromara.hutool.core.math.NumberUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.core.regex.ReUtil; import org.dromara.hutool.core.regex.ReUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.IdcardUtil; import org.dromara.hutool.core.data.IdcardUtil;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.nio.charset.Charset; import java.nio.charset.Charset;

View File

@ -12,7 +12,7 @@
package org.dromara.hutool.core.lang.generator; package org.dromara.hutool.core.lang.generator;
import org.dromara.hutool.core.lang.id.ObjectId; import org.dromara.hutool.core.data.id.ObjectId;
/** /**
* ObjectId生成器 * ObjectId生成器

View File

@ -12,7 +12,7 @@
package org.dromara.hutool.core.lang.generator; package org.dromara.hutool.core.lang.generator;
import org.dromara.hutool.core.lang.id.Snowflake; import org.dromara.hutool.core.data.id.Snowflake;
/** /**
* Snowflake生成器<br> * Snowflake生成器<br>

View File

@ -12,7 +12,7 @@
package org.dromara.hutool.core.lang.generator; package org.dromara.hutool.core.lang.generator;
import org.dromara.hutool.core.lang.id.IdUtil; import org.dromara.hutool.core.data.id.IdUtil;
/** /**
* UUID生成器 * UUID生成器

View File

@ -11,9 +11,21 @@
*/ */
/** /**
* 语言特性包包括大量便捷的数据结构例如验证器Validator分布式ID生成器Snowflake等 * 语言特性包包括大量便捷的数据结构包括
* <ul>
* <li>ANSIANSI编码</li>
* <li>Builder构建器</li>
* <li>Caller查找调用者</li>
* <li>Copier拷贝复制</li>
* <li>Generator生成器</li>
* <li>GettergetXXX抽象</li>
* <li>Intern规范化表示形式</li>
* <li>Loader加载器的抽象</li>
* <li>Mutable可变值对象封装</li>
* <li>Range区间和边界封装</li>
* <li>Tuple元组</li>
* </ul>
* *
* @author looly * @author looly
*
*/ */
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang;

View File

@ -13,8 +13,8 @@
package org.dromara.hutool.core.lang.page; package org.dromara.hutool.core.lang.page;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.lang.DefaultSegment; import org.dromara.hutool.core.lang.range.DefaultSegment;
import org.dromara.hutool.core.lang.Segment; import org.dromara.hutool.core.lang.range.Segment;
import org.dromara.hutool.core.math.NumberUtil; import org.dromara.hutool.core.math.NumberUtil;
/** /**

View File

@ -22,7 +22,8 @@ import java.util.function.Predicate;
* 作为{@link Predicate}使用时可检验指定值是否在区间中即指定值是否同时满足上下界的{@link Bound#test}方法 * 作为{@link Predicate}使用时可检验指定值是否在区间中即指定值是否同时满足上下界的{@link Bound#test}方法
* *
* <p>区间的类型支持通过工厂方法创建下述几种类型的区间</p> * <p>区间的类型支持通过工厂方法创建下述几种类型的区间</p>
* <table summary=""> * <table>
* <caption>区间</caption>
* <tr><th>区间 <th>数学定义 <th>工厂方法 * <tr><th>区间 <th>数学定义 <th>工厂方法
* <tr><td>{@code (a, b)} <td>{@code {x | a < x < b}} <td>{@link #open} * <tr><td>{@code (a, b)} <td>{@code {x | a < x < b}} <td>{@link #open}
* <tr><td>{@code [a, b]} <td>{@code {x | a <= x <= b}}<td>{@link #close} * <tr><td>{@code [a, b]} <td>{@code {x | a <= x <= b}}<td>{@link #close}

View File

@ -10,7 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang.range;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;

View File

@ -10,9 +10,10 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang.range;
import org.dromara.hutool.core.convert.Convert; import org.dromara.hutool.core.convert.Convert;
import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.math.NumberUtil; import org.dromara.hutool.core.math.NumberUtil;
import java.lang.reflect.Type; import java.lang.reflect.Type;

View File

@ -14,7 +14,7 @@ package org.dromara.hutool.core.math;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
/** /**
* 数字检查器 * 数字检查器

View File

@ -19,7 +19,7 @@ import org.dromara.hutool.core.lang.Singleton;
import org.dromara.hutool.core.regex.PatternPool; import org.dromara.hutool.core.regex.PatternPool;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;

View File

@ -19,7 +19,7 @@ import org.dromara.hutool.core.io.IORuntimeException;
import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.IoUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.JNDIUtil; import org.dromara.hutool.core.util.JNDIUtil;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;

View File

@ -14,7 +14,7 @@ package org.dromara.hutool.core.net.url;
import org.dromara.hutool.core.io.stream.FastByteArrayOutputStream; import org.dromara.hutool.core.io.stream.FastByteArrayOutputStream;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import java.io.Serializable; import java.io.Serializable;

View File

@ -13,7 +13,7 @@
package org.dromara.hutool.core.net.url; package org.dromara.hutool.core.net.url;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import java.nio.charset.Charset; import java.nio.charset.Charset;

View File

@ -16,7 +16,7 @@ import org.dromara.hutool.core.collection.CollUtil;
import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.ListUtil;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;

View File

@ -17,7 +17,7 @@ import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.map.TripleTable; import org.dromara.hutool.core.map.TripleTable;
import org.dromara.hutool.core.text.StrTrimer; import org.dromara.hutool.core.text.StrTrimer;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.lang.reflect.Executable; import java.lang.reflect.Executable;
import java.lang.reflect.Method; import java.lang.reflect.Method;

View File

@ -21,7 +21,7 @@ import org.dromara.hutool.core.io.resource.ResourceUtil;
import org.dromara.hutool.core.net.url.URLDecoder; import org.dromara.hutool.core.net.url.URLDecoder;
import org.dromara.hutool.core.net.url.URLUtil; import org.dromara.hutool.core.net.url.URLUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import org.dromara.hutool.core.util.SystemUtil; import org.dromara.hutool.core.util.SystemUtil;

View File

@ -23,7 +23,7 @@ import org.dromara.hutool.core.net.url.URLUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import java.io.IOException; import java.io.IOException;

View File

@ -29,7 +29,6 @@ import org.dromara.hutool.core.text.replacer.RangeReplacerByStr;
import org.dromara.hutool.core.text.replacer.SearchReplacer; import org.dromara.hutool.core.text.replacer.SearchReplacer;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.ByteUtil; import org.dromara.hutool.core.util.ByteUtil;
import org.dromara.hutool.core.util.CharUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;

View File

@ -10,10 +10,7 @@
* See the Mulan PSL v2 for more details. * See the Mulan PSL v2 for more details.
*/ */
package org.dromara.hutool.core.util; package org.dromara.hutool.core.text;
import org.dromara.hutool.core.text.ASCIIStrCache;
import org.dromara.hutool.core.text.CharPool;
/** /**
* 字符工具类<br> * 字符工具类<br>

View File

@ -12,8 +12,6 @@
package org.dromara.hutool.core.text; package org.dromara.hutool.core.text;
import org.dromara.hutool.core.util.CharUtil;
/** /**
* 命名规则封装主要是针对驼峰风格命名连接符命名等的封装 * 命名规则封装主要是针对驼峰风格命名连接符命名等的封装
* *

View File

@ -12,8 +12,6 @@
package org.dromara.hutool.core.text; package org.dromara.hutool.core.text;
import org.dromara.hutool.core.util.CharUtil;
import java.io.Serializable; import java.io.Serializable;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.function.UnaryOperator; import java.util.function.UnaryOperator;

View File

@ -14,7 +14,6 @@ package org.dromara.hutool.core.text;
import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.collection.CollUtil;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -12,7 +12,6 @@
package org.dromara.hutool.core.text; package org.dromara.hutool.core.text;
import org.dromara.hutool.core.util.CharUtil;
import org.dromara.hutool.core.codec.HexUtil; import org.dromara.hutool.core.codec.HexUtil;
/** /**

View File

@ -12,7 +12,7 @@
package org.dromara.hutool.core.text.dfa; package org.dromara.hutool.core.text.dfa;
import org.dromara.hutool.core.lang.DefaultSegment; import org.dromara.hutool.core.lang.range.DefaultSegment;
/** /**
* <p> * <p>

View File

@ -13,7 +13,7 @@
package org.dromara.hutool.core.text.escape; package org.dromara.hutool.core.text.escape;
import org.dromara.hutool.core.text.replacer.StrReplacer; import org.dromara.hutool.core.text.replacer.StrReplacer;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
/** /**
* 形如&#39;的反转义器 * 形如&#39;的反转义器

View File

@ -13,7 +13,7 @@
package org.dromara.hutool.core.text.finder; package org.dromara.hutool.core.text.finder;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
/** /**
* 字符查找器<br> * 字符查找器<br>

View File

@ -15,7 +15,7 @@ package org.dromara.hutool.core.text.placeholder;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.StrValidator; import org.dromara.hutool.core.text.StrValidator;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.util.Objects; import java.util.Objects;
import java.util.function.UnaryOperator; import java.util.function.UnaryOperator;

View File

@ -18,7 +18,7 @@ import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.regex.PatternPool; import org.dromara.hutool.core.regex.PatternPool;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.finder.*; import org.dromara.hutool.core.text.finder.*;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -16,7 +16,7 @@ import org.dromara.hutool.core.collection.CollUtil;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;
import java.io.PrintWriter; import java.io.PrintWriter;

View File

@ -16,7 +16,8 @@ import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.io.IORuntimeException; import org.dromara.hutool.core.io.IORuntimeException;
import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.IoUtil;
import org.dromara.hutool.core.lang.id.Pid; import org.dromara.hutool.core.data.id.Pid;
import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import java.io.File; import java.io.File;

View File

@ -1,7 +1,20 @@
package org.dromara.hutool.core.util; /*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.array;
import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.ListUtil;
import org.dromara.hutool.core.util.CharsetUtil;
import org.dromara.hutool.core.util.ObjUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -16,16 +29,15 @@ import java.util.*;
@SuppressWarnings("ConstantValue") @SuppressWarnings("ConstantValue")
public class ArrayUtilTest { public class ArrayUtilTest {
@SuppressWarnings("DataFlowIssue")
@Test @Test
public void isEmptyTest() { public void isEmptyTest() {
final int[] a = {}; final int[] a = {};
Assertions.assertTrue(ArrayUtil.isEmpty(a)); Assertions.assertTrue(ArrayUtil.isEmpty(a));
Assertions.assertTrue(ArrayUtil.isEmpty((Object) a)); Assertions.assertTrue(ArrayUtil.isEmpty((Object) a));
final int[] b = null; final int[] b = null;
//noinspection ConstantConditions
Assertions.assertTrue(ArrayUtil.isEmpty(b)); Assertions.assertTrue(ArrayUtil.isEmpty(b));
final Object c = null; final Object c = null;
//noinspection ConstantConditions
Assertions.assertTrue(ArrayUtil.isEmpty(c)); Assertions.assertTrue(ArrayUtil.isEmpty(c));
Object d = new Object[]{"1", "2", 3, 4D}; Object d = new Object[]{"1", "2", 3, 4D};
@ -35,9 +47,7 @@ public class ArrayUtilTest {
isEmpty = ArrayUtil.isEmpty(d); isEmpty = ArrayUtil.isEmpty(d);
Assertions.assertTrue(isEmpty); Assertions.assertTrue(isEmpty);
d = null; d = null;
//noinspection ConstantConditions
isEmpty = ArrayUtil.isEmpty(d); isEmpty = ArrayUtil.isEmpty(d);
//noinspection ConstantConditions
Assertions.assertTrue(isEmpty); Assertions.assertTrue(isEmpty);
// Object数组 // Object数组
@ -518,9 +528,9 @@ public class ArrayUtilTest {
} }
@Test @Test
public void replaceTest2(){ public void replaceTest2() {
int[] a = new int[0]; int[] a = new int[0];
a = ArrayUtil.replace(a, 0, 1); a = ArrayUtil.replace(a, 0, new int[]{1});
Assertions.assertEquals(1, a.length); Assertions.assertEquals(1, a.length);
} }
@ -710,22 +720,23 @@ public class ArrayUtilTest {
b = ArrayUtil.startWith(new String[]{"1"}, new String[]{"1"}); b = ArrayUtil.startWith(new String[]{"1"}, new String[]{"1"});
Assertions.assertTrue(b); Assertions.assertTrue(b);
b = ArrayUtil.startWith((String[])null, null); b = ArrayUtil.startWith((String[]) null, null);
Assertions.assertTrue(b); Assertions.assertTrue(b);
} }
@SuppressWarnings({"RedundantArrayCreation", "ConfusingArgumentToVarargsMethod"})
@Test @Test
public void startWithTest2() { public void startWithTest2() {
boolean b = ArrayUtil.startWith(new int[]{}, new int[]{}); boolean b = ArrayUtil.startWith(new int[]{}, new int[]{});
Assertions.assertTrue(b); Assertions.assertTrue(b);
b = ArrayUtil.startWith(new int[]{1,2,3}, new int[]{1}); b = ArrayUtil.startWith(new int[]{1, 2, 3}, new int[]{1});
Assertions.assertTrue(b); Assertions.assertTrue(b);
b = ArrayUtil.startWith(new int[]{1}, new int[]{1}); b = ArrayUtil.startWith(new int[]{1}, new int[]{1});
Assertions.assertTrue(b); Assertions.assertTrue(b);
b = ArrayUtil.startWith((int[])null, null); b = ArrayUtil.startWith((int[]) null, null);
Assertions.assertTrue(b); Assertions.assertTrue(b);
} }
@ -741,7 +752,7 @@ public class ArrayUtilTest {
final byte[] bytes1 = Arrays.copyOfRange(a.getBytes(CharsetUtil.UTF_8), 1, 1 + 4); final byte[] bytes1 = Arrays.copyOfRange(a.getBytes(CharsetUtil.UTF_8), 1, 1 + 4);
Assertions.assertEquals(new String(bytes1), Assertions.assertEquals(new String(bytes1),
new String(a.getBytes(CharsetUtil.UTF_8), 1, 4)); new String(a.getBytes(CharsetUtil.UTF_8), 1, 4));
} }
@Test @Test

View File

@ -7,7 +7,7 @@ public class ArrayWrapperTest {
@Test @Test
void getSubTest() { void getSubTest() {
ArrayWrapper<int[]> array = ArrayWrapper.of(new int[]{1, 2, 3, 4, 5}); ArrayWrapper<int[], Object> array = ArrayWrapper.of(new int[]{1, 2, 3, 4, 5});
int[] sub = array.getSub(1, 4); int[] sub = array.getSub(1, 4);
Assertions.assertArrayEquals(new int[]{2, 3, 4}, sub); Assertions.assertArrayEquals(new int[]{2, 3, 4}, sub);
@ -18,7 +18,7 @@ public class ArrayWrapperTest {
@Test @Test
void getSubStepTest() { void getSubStepTest() {
ArrayWrapper<int[]> array = ArrayWrapper.of(new int[]{1, 2, 3, 4, 5}); ArrayWrapper<int[], Object> array = ArrayWrapper.of(new int[]{1, 2, 3, 4, 5});
int[] sub = array.getSub(1, 4, 2); int[] sub = array.getSub(1, 4, 2);
Assertions.assertArrayEquals(new int[]{2, 4}, sub); Assertions.assertArrayEquals(new int[]{2, 4}, sub);

View File

@ -1,4 +1,16 @@
package org.dromara.hutool.core.util; /*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.data;
import org.dromara.hutool.core.date.DateTime; import org.dromara.hutool.core.date.DateTime;
import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.date.DateUtil;

View File

@ -1,6 +1,6 @@
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang;
import org.dromara.hutool.core.lang.id.NanoId; import org.dromara.hutool.core.data.id.NanoId;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,6 +1,6 @@
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang;
import org.dromara.hutool.core.lang.id.ObjectId; import org.dromara.hutool.core.data.id.ObjectId;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -2,8 +2,8 @@ package org.dromara.hutool.core.lang;
import org.dromara.hutool.core.collection.ConcurrentHashSet; import org.dromara.hutool.core.collection.ConcurrentHashSet;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.lang.id.IdUtil; import org.dromara.hutool.core.data.id.IdUtil;
import org.dromara.hutool.core.lang.id.Snowflake; import org.dromara.hutool.core.data.id.Snowflake;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.core.thread.ThreadUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;

View File

@ -1,7 +1,7 @@
package org.dromara.hutool.core.lang; package org.dromara.hutool.core.lang;
import org.dromara.hutool.core.collection.ConcurrentHashSet; import org.dromara.hutool.core.collection.ConcurrentHashSet;
import org.dromara.hutool.core.lang.id.UUID; import org.dromara.hutool.core.data.id.UUID;
import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.core.thread.ThreadUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -2,7 +2,7 @@ package org.dromara.hutool.core.lang;
import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.date.DateUtil;
import org.dromara.hutool.core.exception.ValidateException; import org.dromara.hutool.core.exception.ValidateException;
import org.dromara.hutool.core.lang.id.IdUtil; import org.dromara.hutool.core.data.id.IdUtil;
import org.dromara.hutool.core.regex.PatternPool; import org.dromara.hutool.core.regex.PatternPool;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.core.util.CharsetUtil;

View File

@ -1,4 +1,16 @@
package org.dromara.hutool.core.util; /*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.text;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,7 +1,6 @@
package org.dromara.hutool.core.text; package org.dromara.hutool.core.text;
import org.dromara.hutool.core.map.Dict; import org.dromara.hutool.core.map.Dict;
import org.dromara.hutool.core.util.CharUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -2,7 +2,6 @@ package org.dromara.hutool.core.text;
import org.dromara.hutool.core.map.Dict; import org.dromara.hutool.core.map.Dict;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.CharUtil;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.reflect.ClassUtil; import org.dromara.hutool.core.reflect.ClassUtil;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.exception.CloneException; import org.dromara.hutool.core.exception.CloneException;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;

View File

@ -1,6 +1,19 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.ListUtil;
import org.dromara.hutool.core.util.EnumUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,6 +1,19 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.codec.hash.HashUtil; import org.dromara.hutool.core.codec.hash.HashUtil;
import org.dromara.hutool.core.util.ByteUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,6 +1,19 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.codec.HexUtil; import org.dromara.hutool.core.codec.HexUtil;
import org.dromara.hutool.core.util.CharsetUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.collection.ConcurrentHashSet; import org.dromara.hutool.core.collection.ConcurrentHashSet;
@ -5,8 +17,8 @@ import org.dromara.hutool.core.date.DateUtil;
import org.dromara.hutool.core.date.StopWatch; import org.dromara.hutool.core.date.StopWatch;
import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.exception.HutoolException;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.lang.id.IdUtil; import org.dromara.hutool.core.data.id.IdUtil;
import org.dromara.hutool.core.lang.id.Snowflake; import org.dromara.hutool.core.data.id.Snowflake;
import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.core.thread.ThreadUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;

View File

@ -1,7 +1,20 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.collection.iter.EnumerationIter; import org.dromara.hutool.core.collection.iter.EnumerationIter;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.util.JNDIUtil;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,6 +1,19 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.util.JdkUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.reflect.FieldUtil; import org.dromara.hutool.core.reflect.FieldUtil;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;

View File

@ -1,8 +1,21 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.ListUtil;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.hutool.core.util.ObjUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,9 +1,22 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.ListUtil;
import org.dromara.hutool.core.convert.Convert; import org.dromara.hutool.core.convert.Convert;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.math.NumberUtil; import org.dromara.hutool.core.math.NumberUtil;
import org.dromara.hutool.core.util.RandomUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.ListUtil;

View File

@ -1,7 +1,20 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.lang.mutable.MutableObj; import org.dromara.hutool.core.lang.mutable.MutableObj;
import org.dromara.hutool.core.util.ReferenceUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,6 +1,19 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.util.RuntimeUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.reflect.FieldUtil; import org.dromara.hutool.core.reflect.FieldUtil;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.bean.BeanUtil; import org.dromara.hutool.core.bean.BeanUtil;
@ -8,6 +20,7 @@ import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.map.MapBuilder; import org.dromara.hutool.core.map.MapBuilder;
import org.dromara.hutool.core.map.MapUtil; import org.dromara.hutool.core.map.MapUtil;
import lombok.Data; import lombok.Data;
import org.dromara.hutool.core.util.XmlUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.core.util; package org.dromara.hutool.core.util;
import org.dromara.hutool.core.compress.ZipReader; import org.dromara.hutool.core.compress.ZipReader;
@ -6,6 +18,8 @@ import org.dromara.hutool.core.io.IORuntimeException;
import org.dromara.hutool.core.io.file.FileUtil; import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ByteUtil;
import org.dromara.hutool.core.util.CharsetUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -15,8 +15,8 @@ package org.dromara.hutool.cron;
import org.dromara.hutool.core.map.MapUtil; import org.dromara.hutool.core.map.MapUtil;
import org.dromara.hutool.core.thread.ExecutorBuilder; import org.dromara.hutool.core.thread.ExecutorBuilder;
import org.dromara.hutool.core.thread.ThreadFactoryBuilder; import org.dromara.hutool.core.thread.ThreadFactoryBuilder;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.lang.id.IdUtil; import org.dromara.hutool.core.data.id.IdUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.cron.listener.TaskListener; import org.dromara.hutool.cron.listener.TaskListener;
import org.dromara.hutool.cron.listener.TaskListenerManager; import org.dromara.hutool.cron.listener.TaskListenerManager;

View File

@ -1,7 +1,7 @@
package org.dromara.hutool.cron; package org.dromara.hutool.cron;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.lang.id.IdUtil; import org.dromara.hutool.core.data.id.IdUtil;
import org.dromara.hutool.cron.pattern.CronPattern; import org.dromara.hutool.cron.pattern.CronPattern;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@ -3,7 +3,7 @@ package org.dromara.hutool.cron.demo;
import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.date.DateUtil;
import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.lang.Console;
import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.core.thread.ThreadUtil;
import org.dromara.hutool.core.lang.id.IdUtil; import org.dromara.hutool.core.data.id.IdUtil;
/** /**
* 测试定时任务当触发到定时的时间点时执行doTest方法 * 测试定时任务当触发到定时的时间点时执行doTest方法

View File

@ -17,7 +17,7 @@ import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.IoUtil;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.util.CharUtil; import org.dromara.hutool.core.text.CharUtil;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.crypto.asymmetric.AsymmetricAlgorithm; import org.dromara.hutool.crypto.asymmetric.AsymmetricAlgorithm;

Some files were not shown because too many files have changed in this diff Show More