类 X
- java.lang.Object
-
- me.codeplayer.util.X
-
public abstract class X extends Object
通用公共工具类
此类全为静态方法,请使用静态方法的形式调用
由于均为静态方法,所以类名尽可能地短,以免干扰逻辑可读性
并且工具类会经常被调用,类名短,也方便开发人员编写。- 作者:
- Ready
-
-
构造器概要
构造器 构造器 说明 X()
-
方法概要
所有方法 静态方法 具体方法 修饰符和类型 方法 说明 static <T> TcastType(Object obj)将指定泛型对象进行泛型擦除,并转换为对应的泛型声明static <T> Tdecode(Object input, Object... expressions)将指定的值根据指定的表达式解析,并返回解析后的结果static <T extends Collection<?>>
TemptyToNull(T c)尝试将空集合转为 nullstatic <T> T[]emptyToNull(T[] array)尝试将空数组转为 nullstatic <T> inteqLax(T inputVal, T currentVal)宽松地比较两个实体的指定属性值是否相等,并返回比较结果static <T,R>
inteqLax(T input, T current, Function<T,R> getter)宽松地比较两个实体的指定属性值是否相等static <T,R>
RexpectEquals(T input, T current, Function<T,R> getter, BiConsumer<T,R> setIfNull)期望两个实体的指定属性值是相等的,并返回该值。static <T,R>
RexpectEquals(T input, T current, Function<T,R> getter, BiConsumer<T,R> setIfNull, Object error)期望两个实体的指定属性值是相等的,并返回该值。static <T,R>
RexpectEqualsBasedOld(T input, T old, Function<T,R> getter, Consumer<R> setOldIfInputNul)期望两个实体的指定属性值是相等的,并返回该值。static <T,R>
RexpectEqualsBasedOld(T input, T old, Function<T,R> getter, Consumer<R> setOldIfInputNull, Object error)期望两个实体的指定属性值是相等的,并返回该值。static StringexpectNotEmpty(String v1, String v2)从指定的多个字符串依次检测并选取第一个不为空字符串的值,否则返回空字符串""static StringexpectNotEmpty(String v1, String v2, String v3)从指定的多个字符串依次检测并选取第一个不为空字符串的值,否则返回空字符串""static StringexpectNotEmpty(String v1, String v2, String v3, String v4)从指定的多个字符串依次检测并选取第一个不为空字符串的值,否则返回空字符串""static <T> TexpectNotNull(T v1, T v2)从指定的多个值依次检测并选取第一个不为null的值static <T> TexpectNotNull(T v1, T v2, T v3)从指定的多个值依次检测并选取第一个不为null的值static <T> TexpectNotNull(T v1, T v2, T v3, T v4)从指定的多个值依次检测并选取第一个不为null的值static intgetCapacity(int capacity)根据需要存储的元素个数确定HashMap等Map接口实现类的初始容量(使用默认的负载因子:0.75)static intgetCapacity(int capacity, float loadFactor)根据需要存储的元素个数确定HashMap等Map接口实现类的初始容量static <T> TgetElse(T val, Supplier<T> other)当指定 val 为 null 时,则返回替补other中的返回值,否则返回 val 本身static org.slf4j.LoggergetLogger()获取调用此方法的当前类的日志处理器(Logger)
该 Logger 使用 slf4j APIstatic <T> TgetRecursively(T root, Function<T,T> recursion, Predicate<T> untilMatch)递归地调用对象的指定方法,直到返回的对象满足指定条件(如果root对象本身符合条件就返回其本身)static booleanisBlank(Object obj)判断指定的对象是否为空
如果对象(或其 toString() 返回值)为null、空字符串、空格字符串,则返回true
注意:本方法会先去除字符串两边的空格,再判断static booleanisBlank(String str)判断指定的字符串是否为null或去空格后为空字符串,如果是则返回truestatic booleanisEmpty(Object obj)判断指定的对象是否为空
如果对象(或其 toString() 返回值)为 null、空字符串,则返回 true
注意:本方法不会去除字符串两边的空格,如果想去除字符串两边的空格后再进行判断,可以使用 isBlank() 方法static booleanisEmpty(String str)判断指定的字符串是否为空
如果字符串为null、空字符串,则返回true
注意:本方法不会去除字符串两边的空格,如果想去除字符串两边的空格后再进行判断,可以使用isBlank()方法static <T,R>
booleanisMatch(T bean, Function<? super T,R> mapper, Predicate<? super R> matcher)检测指定的对象在经过指定的转换后,是否符合指定的条件static booleanisMutex(boolean a, boolean b)指示两个等价于 boolean 值的条件是否互斥(若一个为 true,则另一个必定为 false)static booleanisValid(byte[] array)判断指定byte数组是否有效。static booleanisValid(char[] array)判断指定char数组是否有效。static booleanisValid(double[] array)判断指定double数组是否有效。static booleanisValid(float[] array)判断指定float数组是否有效。static booleanisValid(int[] array)判断指定int数组是否有效。static booleanisValid(long[] array)判断指定long数组是否有效。static booleanisValid(Boolean b)判断指定Boolean值是否有效。static booleanisValid(CharSequence sequence)判断指定的字符串序列是否有效。static booleanisValid(Number number)判断指定的数值对象是否有效。static booleanisValid(Object arg)判断指定对象是否无效。static booleanisValid(Object[] array)判断指定的对象数组是否有效。static booleanisValid(Collection<?> collection)判断指定的Collection对象是否有效。static booleanisValid(Map<?,?> map)判断指定的Map对象是否有效。static <T,R>
Rmap(T obj, Function<? super T,R> mapper)对指定的对象执行指定的mapper转换,安全地获得期望的转换结果static <T,R,E>
Emap(T obj, Function<? super T,R> mapper, Function<R,E> nestedMapper)对指定的对象执行mapper、nestedMapper双重转换,安全地获得期望的转换结果static <T,R>
RmapAny(Function<? super T,? extends R> mapper, Predicate<R> matcher, T... args)尝试将数组 args 中的元素依次应用到 mapper 中,并返回第一个符合matcher条件的返回值static <T,R>
RmapElse(T obj, Function<? super T,R> mapper, R other)对指定的对象执行执行的mapper转换,安全地获得期望的转换结果static <T,R>
RmapElseGet(T obj, Function<? super T,R> mapper, Supplier<R> other)对指定的对象执行执行的mapper转换,安全地获得期望的转换结果static <T> booleanmatchAll(Predicate<T> matcher, T... values)指示指定的参数是否都符合指定的matcher条件static booleanmatchAllOrNone(boolean a, boolean b)指示两个条件是否都成立,或者都不成立static booleanmatchAllOrNone(boolean a, boolean b, boolean c)指示3个等价于 boolean 值的条件要么都成立,要么都不成立static <T> booleanmatchAny(Predicate<T> matcher, T... values)指示指定的参数是否至少有一个符合指定的matcher条件static intsize(CharSequence cs)返回字符序列的长度,如果参数为null,则返回 0static intsize(Object[] array)返回数组的长度,如果参数为null,则返回 0static intsize(Collection<?> c)返回集合的长度,如果参数为null,则返回 0static intsize(Map<?,?> map)返回 Map 的长度,如果参数为null,则返回 0static intsizeOfArray(Object array)返回数组的长度,如果参数为null,则返回 0static Stringtrim4Html(String str)去除字符串两端的空格
如果字符串为null、空字符串""、空白字符串,这返回HTML的空格符" "static <E> EtryUnwrap(Object supplier)尝试拆箱可能由Supplier接口包装的实体对象static <T> voiduse(T obj, Consumer<? super T> consumer)使用obj执行指定的调用static <T> voiduse(T obj, Predicate<T> filter, Consumer<? super T> consumer)使用obj执行指定的调用static RuntimeExceptionwrapException(String msg, boolean forceUseMsg, Throwable ex)将指定的异常信息封装为运行时异常static RuntimeExceptionwrapException(String msg, boolean forceUseMsg, Throwable ex, Throwable cause)将指定的异常信息封装为运行时异常static RuntimeExceptionwrapException(String msg, Throwable ex)将指定的异常信息封装为运行时异常static RuntimeExceptionwrapException(String msg, Throwable ex, Throwable cause)将指定的异常信息封装为运行时异常
-
-
-
方法详细资料
-
getLogger
public static org.slf4j.Logger getLogger()
获取调用此方法的当前类的日志处理器(Logger)
该 Logger 使用 slf4j API
-
isEmpty
public static boolean isEmpty(String str)
判断指定的字符串是否为空
如果字符串为null、空字符串,则返回true
注意:本方法不会去除字符串两边的空格,如果想去除字符串两边的空格后再进行判断,可以使用isBlank()方法
-
isEmpty
public static boolean isEmpty(Object obj)
判断指定的对象是否为空
如果对象(或其 toString() 返回值)为 null、空字符串,则返回 true
注意:本方法不会去除字符串两边的空格,如果想去除字符串两边的空格后再进行判断,可以使用 isBlank() 方法- 参数:
obj- 指定的对象
-
isBlank
public static boolean isBlank(String str)
判断指定的字符串是否为null或去空格后为空字符串,如果是则返回true- 参数:
str- 指定的字符串对象
-
isBlank
public static boolean isBlank(Object obj)
判断指定的对象是否为空
如果对象(或其 toString() 返回值)为null、空字符串、空格字符串,则返回true
注意:本方法会先去除字符串两边的空格,再判断- 参数:
obj- 指定的对象- 另请参阅:
StringUtil.isBlank(Object)
-
expectNotNull
public static <T> T expectNotNull(T v1, T v2, T v3, T v4)从指定的多个值依次检测并选取第一个不为null的值
-
expectNotNull
public static <T> T expectNotNull(T v1, T v2, T v3)从指定的多个值依次检测并选取第一个不为null的值
-
expectNotNull
public static <T> T expectNotNull(T v1, T v2)从指定的多个值依次检测并选取第一个不为null的值
-
expectNotEmpty
public static String expectNotEmpty(String v1, String v2, String v3, String v4)
从指定的多个字符串依次检测并选取第一个不为空字符串的值,否则返回空字符串""
-
expectNotEmpty
public static String expectNotEmpty(String v1, String v2, String v3)
从指定的多个字符串依次检测并选取第一个不为空字符串的值,否则返回空字符串""
-
expectNotEmpty
public static String expectNotEmpty(String v1, String v2)
从指定的多个字符串依次检测并选取第一个不为空字符串的值,否则返回空字符串""
-
isValid
public static boolean isValid(Boolean b)
判断指定Boolean值是否有效。true即为有效。- 参数:
b- 指定的Boolean对象
-
isValid
public static boolean isValid(Number number)
判断指定的数值对象是否有效。如果参数为null或 数值等于0,则为无效;其他均为有效。- 参数:
number- 指定的
-
isValid
public static boolean isValid(CharSequence sequence)
判断指定的字符串序列是否有效。如果参数为null或空字符串"",则为无效;其他均为有效。- 参数:
sequence- 指定的字符串序列对象
-
isValid
public static boolean isValid(Map<?,?> map)
判断指定的Map对象是否有效。如果参数为null或map.size() == 0,则为无效,其他均为有效。- 参数:
map- 指定的映射集合对象
-
isValid
public static boolean isValid(Collection<?> collection)
判断指定的Collection对象是否有效。如果参数为null或collection.size() == 0,则为无效,其他均为有效。- 参数:
collection- 指定的集合对象
-
isValid
public static boolean isValid(byte[] array)
判断指定byte数组是否有效。如果参数为null或array.length == 0,则为无效,其他均为有效。- 参数:
array- 指定的byte数组
-
isValid
public static boolean isValid(int[] array)
判断指定int数组是否有效。如果参数为null或array.length == 0,则为无效,其他均为有效。- 参数:
array- 指定的int数组
-
isValid
public static boolean isValid(long[] array)
判断指定long数组是否有效。如果参数为null或array.length == 0,则为无效,其他均为有效。- 参数:
array- 指定的long数组
-
isValid
public static boolean isValid(char[] array)
判断指定char数组是否有效。如果参数为null或array.length == 0,则为无效,其他均为有效。- 参数:
array- 指定的char数组
-
isValid
public static boolean isValid(float[] array)
判断指定float数组是否有效。如果参数为null或array.length == 0,则为无效,其他均为有效。- 参数:
array- 指定的float数组
-
isValid
public static boolean isValid(double[] array)
判断指定double数组是否有效。如果参数为null或array.length == 0,则为无效,其他均为有效。- 参数:
array- 指定的double数组
-
isValid
public static boolean isValid(Object[] array)
判断指定的对象数组是否有效。如果参数为null或array.length == 0,则为无效,其他均为有效。- 参数:
array- 指定的对象数组
-
isValid
public static boolean isValid(Object arg)
判断指定对象是否无效。只有以下情况视为无效,其他均为有效。
无效的参数对象arg的定义如下(按照判断顺序排序):
1.arg == null
2.如果arg是字符序列对象,去空格后,arg.length() == 0
3.如果arg是数值对象,去空格后,值 == 0
4.如果arg是映射集合(Map)对象,arg.size() == 0
5.如果arg是集合(Collection)对象,arg.size() == 0
6.如果arg是数组(Array)对象,arg.length == 0
7.如果arg是布尔(Boolean)对象,arg 等价于 false- 返回:
- 上述无效的情况返回
false,其他情况均返回true
-
decode
public static <T> T decode(Object input, Object... expressions)
将指定的值根据指定的表达式解析,并返回解析后的结果- 参数:
input- 指定的值expressions- 指定的表达式,例如:("1", "男", "0", "女")方法将会将指定属性的值(value),与表达式进行匹配,形如:if(value 等于 "1"){ return "男"; }else if(value 等于 "0"){ return "女"; }else{ return value; }本方法接收的表达式参数个数可以为奇数,例如:
(6, "星期六", 7, "星期天", "工作日"),相当于:if(value 等于 6){ return "星期六"; }else if(value 等于 7){ return "星期天"; }else{ return "工作日"; }
-
trim4Html
public static String trim4Html(String str)
去除字符串两端的空格
如果字符串为null、空字符串""、空白字符串,这返回HTML的空格符" "
-
getCapacity
public static int getCapacity(int capacity)
根据需要存储的元素个数确定HashMap等Map接口实现类的初始容量(使用默认的负载因子:0.75)- 参数:
capacity- 需要存储的元素个数
-
getCapacity
public static int getCapacity(int capacity, float loadFactor)根据需要存储的元素个数确定HashMap等Map接口实现类的初始容量- 参数:
capacity- 需要存储的元素个数loadFactor- 负载因子,必须介于0-1之间,如果不在此范围,内部也不检测,后果自负
-
castType
public static <T> T castType(Object obj)
将指定泛型对象进行泛型擦除,并转换为对应的泛型声明
-
use
public static <T> void use(@Nullable T obj, Consumer<? super T> consumer)
使用obj执行指定的调用- 参数:
obj- 指定的对象,可以为 nullconsumer- 指定的调用,如果obj为 null,则不执行该调用
-
use
public static <T> void use(@Nullable T obj, Predicate<T> filter, Consumer<? super T> consumer)
使用obj执行指定的调用- 参数:
obj- 指定的对象,可以为 nullfilter- 过滤器,只有 {code obj} 满足该条件,才会执行consumerconsumer- 指定的调用,如果obj为 null,则不执行该调用
-
map
public static <T,R> R map(@Nullable T obj, Function<? super T,R> mapper)
对指定的对象执行指定的mapper转换,安全地获得期望的转换结果- 参数:
obj- 指定的对象,可以为 nullmapper- 转换器- 返回:
- 如果
obj == null则返回null,否则返回转换后的结果 - 从以下版本开始:
- 2.3.0
-
map
public static <T,R,E> E map(@Nullable T obj, Function<? super T,R> mapper, Function<R,E> nestedMapper)
对指定的对象执行mapper、nestedMapper双重转换,安全地获得期望的转换结果- 参数:
obj- 指定的对象,可以为 nullmapper- 转换器nestedMapper- 嵌套的二次转换器- 返回:
- 如果
obj == null则返回 null,否则返回转换后的结果 - 从以下版本开始:
- 2.6
-
mapElse
public static <T,R> R mapElse(@Nullable T obj, Function<? super T,R> mapper, R other)
对指定的对象执行执行的mapper转换,安全地获得期望的转换结果- 参数:
obj- 指定的对象,可以为 nullmapper- 转换器other- 如果转换后的值为null,则返回该参数值- 返回:
- 如果
obj == null则返回null,否则返回转换后的结果 - 从以下版本开始:
- 2.6
-
mapElseGet
public static <T,R> R mapElseGet(@Nullable T obj, Function<? super T,R> mapper, Supplier<R> other)
对指定的对象执行执行的mapper转换,安全地获得期望的转换结果- 参数:
obj- 指定的对象,可以为 nullmapper- 转换器other- 如果转换后的值为null,则返回该备用对象的返回值- 返回:
- 如果
obj == null则返回null,否则返回转换后的结果 - 从以下版本开始:
- 2.6
-
tryUnwrap
public static <E> E tryUnwrap(@Nullable Object supplier)
尝试拆箱可能由Supplier接口包装的实体对象- 返回:
- 如果指定参数实现了
Supplier接口,则调用 get() 方法 并返回其值;否则直接返回 该对象本身 - 从以下版本开始:
- 2.3.0
-
getElse
public static <T> T getElse(@Nullable T val, Supplier<T> other)
当指定 val 为 null 时,则返回替补other中的返回值,否则返回 val 本身- 从以下版本开始:
- 2.6
-
isMatch
public static <T,R> boolean isMatch(@Nullable T bean, Function<? super T,R> mapper, Predicate<? super R> matcher)
检测指定的对象在经过指定的转换后,是否符合指定的条件- 参数:
bean- 指定的对象mapper- 转换器matcher- 条件判断器- 从以下版本开始:
- 2.3.0
-
wrapException
public static RuntimeException wrapException(@Nullable String msg, boolean forceUseMsg, @Nullable Throwable ex, @Nullable Throwable cause)
将指定的异常信息封装为运行时异常- 参数:
forceUseMsg- 如果指定的异常是运行时异常,且msg不为null;此时是否还需要包装一个IllegalArgumentException来确保强制使用传入的msg作为异常信息- 返回:
- 如果异常
ex为 null,或者不是运行时异常,则自动将其封装为IllegalArgumentException;否则返回对应的运行时异常 - 从以下版本开始:
- 2.3.0
-
wrapException
public static RuntimeException wrapException(@Nullable String msg, @Nullable Throwable ex, @Nullable Throwable cause)
将指定的异常信息封装为运行时异常注意:如果指定的异常是运行时异常;此时不会使用传入的
msg- 返回:
- 如果异常
ex为 null,或者不是运行时异常,则自动将其封装为IllegalArgumentException;否则返回对应的运行时异常 - 从以下版本开始:
- 2.3.0
-
wrapException
public static RuntimeException wrapException(@Nullable String msg, boolean forceUseMsg, @Nullable Throwable ex)
将指定的异常信息封装为运行时异常- 参数:
forceUseMsg- 如果指定的异常是运行时异常,且msg不为null;此时是否还需要包装一个IllegalArgumentException来确保强制使用传入的msg作为异常信息- 返回:
- 如果异常
ex为 null,或者不是运行时异常,则自动将其封装为IllegalArgumentException;否则返回对应的运行时异常 - 从以下版本开始:
- 2.3.0
-
wrapException
public static RuntimeException wrapException(@Nullable String msg, @Nullable Throwable ex)
将指定的异常信息封装为运行时异常- 返回:
- 如果异常
ex为 null,或者不是运行时异常,则自动将其封装为IllegalArgumentException;否则返回对应的运行时异常 - 从以下版本开始:
- 2.3.0
-
getRecursively
public static <T> T getRecursively(T root, Function<T,T> recursion, Predicate<T> untilMatch)递归地调用对象的指定方法,直到返回的对象满足指定条件(如果root对象本身符合条件就返回其本身)- 从以下版本开始:
- 2.8
-
eqLax
public static <T> int eqLax(@Nullable T inputVal, @Nullable T currentVal)
宽松地比较两个实体的指定属性值是否相等,并返回比较结果- 返回:
- 相等 -> 1;如果有一方为 null -> 0;否则返回 -1
- 从以下版本开始:
- 2.8
-
eqLax
public static <T,R> int eqLax(@Nullable T input, @Nullable T current, Function<T,R> getter)
宽松地比较两个实体的指定属性值是否相等- 返回:
- 相等 -> 1;如果有一方为 null -> 0;否则返回 -1
- 从以下版本开始:
- 2.8
-
expectEquals
public static <T,R> R expectEquals(@Nullable T input, @Nullable T current, Function<T,R> getter, BiConsumer<T,R> setIfNull, @Nullable Object error) throws IllegalArgumentException
期望两个实体的指定属性值是相等的,并返回该值。 本方法允许其中一个属性值为 null,并会自动使用另一方的值进行填补。如果两者都不为 null 且不相等,则直接抛出非法参数异常- 返回:
- 返回非空的属性值。如果两个属性值相等,优先返回
current的属性值 - 抛出:
IllegalArgumentException- 从以下版本开始:
- 2.8
-
expectEquals
public static <T,R> R expectEquals(@Nullable T input, @Nullable T current, Function<T,R> getter, BiConsumer<T,R> setIfNull) throws IllegalArgumentException
期望两个实体的指定属性值是相等的,并返回该值。 本方法允许其中一个属性值为 null,并会自动使用另一方的值进行填补。如果两者都不为 null 且不相等,则直接抛出非法参数异常- 返回:
- 返回非空的属性值。如果两个属性值相等,优先返回
current的属性值 - 抛出:
IllegalArgumentException- 从以下版本开始:
- 2.8
-
expectEqualsBasedOld
public static <T,R> R expectEqualsBasedOld(@Nullable T input, @Nullable T old, Function<T,R> getter, Consumer<R> setOldIfInputNull, @Nullable Object error) throws IllegalArgumentException
期望两个实体的指定属性值是相等的,并返回该值。 如果两者不相等且input为 null,则会自动使用old进行赋值操作。如果两者都不为 null 且不相等,则直接抛出非法参数异常- 返回:
- 返回
old的属性值 - 抛出:
IllegalArgumentException- 从以下版本开始:
- 2.8
-
expectEqualsBasedOld
public static <T,R> R expectEqualsBasedOld(@Nullable T input, @Nullable T old, Function<T,R> getter, Consumer<R> setOldIfInputNul) throws IllegalArgumentException
期望两个实体的指定属性值是相等的,并返回该值。 如果两者不相等且input为 null,则会自动使用old进行赋值操作。如果两者都不为 null 且不相等,则直接抛出非法参数异常- 返回:
- 返回
old的属性值 - 抛出:
IllegalArgumentException- 从以下版本开始:
- 2.8
-
size
public static int size(Collection<?> c)
返回集合的长度,如果参数为null,则返回 0- 从以下版本开始:
- 2.8
-
size
public static int size(Map<?,?> map)
返回 Map 的长度,如果参数为null,则返回 0- 从以下版本开始:
- 2.8
-
size
public static int size(Object[] array)
返回数组的长度,如果参数为null,则返回 0- 从以下版本开始:
- 2.8
-
sizeOfArray
public static int sizeOfArray(Object array) throws IllegalArgumentException
返回数组的长度,如果参数为null,则返回 0- 抛出:
IllegalArgumentException- 如果array不是数组(可以为null)- 从以下版本开始:
- 2.8
-
size
public static int size(CharSequence cs)
返回字符序列的长度,如果参数为null,则返回 0- 从以下版本开始:
- 2.8
-
matchAllOrNone
public static boolean matchAllOrNone(boolean a, boolean b)指示两个条件是否都成立,或者都不成立- 返回:
a && b || !a && !b
-
matchAllOrNone
public static boolean matchAllOrNone(boolean a, boolean b, boolean c)指示3个等价于 boolean 值的条件要么都成立,要么都不成立
-
isMutex
public static boolean isMutex(boolean a, boolean b)指示两个等价于 boolean 值的条件是否互斥(若一个为 true,则另一个必定为 false)
-
matchAny
public static <T> boolean matchAny(Predicate<T> matcher, T... values)
指示指定的参数是否至少有一个符合指定的matcher条件
-
matchAll
public static <T> boolean matchAll(Predicate<T> matcher, T... values)
指示指定的参数是否都符合指定的matcher条件
-
emptyToNull
public static <T> T[] emptyToNull(T[] array)
尝试将空数组转为 null
-
emptyToNull
public static <T extends Collection<?>> T emptyToNull(T c)
尝试将空集合转为 null
-
emptyToNull
public static <T extends Map<?,?>> T emptyToNull(T map)
尝试将空 Map 集合转为 null
-
-