Package org.miaixz.bus.core.xyz
Class ObjectKit
java.lang.Object
org.miaixz.bus.core.xyz.ObjectKit
对象工具类,包括判空、克隆、序列化等操作
原数组相关操作见:ArrayKit.hasBlank(CharSequence...)、ArrayKit.isAllBlank(CharSequence...)等等
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> void如果指定的对象不为null,则执行Consumer处理source,否则不进行操作static <T,R> R 如果指定的对象不为null,则应用提供的映射函数并返回结果,否则返回null。static <T> Tclone(T obj) 克隆对象 如果对象是数组,则等同于ArrayKit.clone(Object); 如果对象实现了Cloneable接口,调用Object.clone()方法; 如果对象实现了Serializable接口,执行深度克隆; 不符合上述任意情况则返回null;static <T> TcloneByStream(T obj) 序列化后拷贝流的方式克隆 若对象未实现Serializable接口,则返回nullstatic <T> TcloneIfPossible(T obj) 返回克隆后的对象,如果克隆失败,返回原对象static boolean检查obj中是否包含element,若obj为null,则直接返回false。 支持类型包括:null:默认返回false;String:等同String.contains(CharSequence);Collection:等同Collection.contains(Object);Map:等同Map.containsValue(Object);Iterator、Iterable、Enumeration或数组: 等同于遍历后对其元素调用equals(Object, Object)方法;static <T,R> R defaultIfNull(T source, Function<? super T, ? extends R> handler, Supplier<? extends R> defaultSupplier) 如果给定对象不为null返回自定义handler处理后的结果,否则返回Supplier.get()提供的默认值static <T,R> R defaultIfNull(T source, Function<? super T, ? extends R> handler, R defaultValue) 如果给定对象不为null返回自定义handler处理后的结果,否则返回默认值static <T> TdefaultIfNull(T source, Supplier<? extends T> defaultSupplier) 如果给定对象不为null返回原值, 否则返回Supplier.get()提供的默认值static <T> TdefaultIfNull(T object, T defaultValue) 如果给定对象为null返回默认值static boolean比较两个对象是否相等,满足下述任意条件即返回true: 若两对象皆为BigDecimal,且满足0 == obj1.compareTo(obj2)若两对象都为数组,调用Arrays.equals完成判断obj1 == null && obj2 == nullobj1.equals(obj2)static Class<?> getTypeArgument(Object obj) 获得给定类的第一个泛型参数static Class<?> getTypeArgument(Object obj, int index) 获得给定类指定下标的泛型参数static booleanisBasicType(Object object) 是否为基本类型,包括包装类型和原始类型static boolean判断指定对象是否为空,支持类型包括:null:默认返回true; 数组:等同于ArrayKit.isEmpty(Object);CharSequence:等同于StringValidator.isEmpty(CharSequence);Collection:等同于CollKit.isEmpty(Collection);Map:等同于MapKit.isEmpty(Map);Iterator或Iterable:等同于IteratorKit.isEmpty(Iterator)、IteratorKit.isEmpty(Iterable);static booleanisNotEmpty(Object obj) 判断指定对象是否为非空static boolean检查对象是否不为nullstatic boolean检查对象是否为nullstatic booleanisValidIfNumber(Object obj) 是否为有效的数字,主要用于检查浮点数是否为有意义的数值 若对象不为Number类型,则直接返回true,否则: 若对象类型为Double,则检查Double.isInfinite()或Double.isNaN(); 若对象类型为Float,则检查Float.isInfinite()或Float.isNaN();static int计算对象长度,支持类型包括:null:默认返回0; 数组:返回数组长度;CharSequence:返回CharSequence.length();Collection:返回Collection.size();Iterator或Iterable:可迭代的元素数量;Enumeration:返回可迭代的元素数量;static boolean比较两个对象是否不相等static booleannullSafeEquals(Object o1, Object o2) 确定给定的对象是否相等,如果两个对象都是null, 则返回true;如果只有一个对象是null, 则返回falsestatic String
-
Constructor Details
-
ObjectKit
public ObjectKit()
-
-
Method Details
-
equals
比较两个对象是否相等,满足下述任意条件即返回true:- 若两对象皆为
BigDecimal,且满足0 == obj1.compareTo(obj2) - 若两对象都为数组,调用Arrays.equals完成判断
obj1 == null && obj2 == nullobj1.equals(obj2)
- Parameters:
obj1- 对象1obj2- 对象2- Returns:
- 是否相等
- 若两对象皆为
-
notEquals
比较两个对象是否不相等- Parameters:
obj1- 对象1obj2- 对象2- Returns:
- 是否不等
- See Also:
-
length
计算对象长度,支持类型包括:null:默认返回0;- 数组:返回数组长度;
CharSequence:返回CharSequence.length();Collection:返回Collection.size();Iterator或Iterable:可迭代的元素数量;Enumeration:返回可迭代的元素数量;
- Parameters:
obj- 被计算长度的对象- Returns:
- 长度
-
contains
检查obj中是否包含element,若obj为null,则直接返回false。 支持类型包括:null:默认返回false;String:等同String.contains(CharSequence);Collection:等同Collection.contains(Object);Map:等同Map.containsValue(Object);-
Iterator、Iterable、Enumeration或数组: 等同于遍历后对其元素调用equals(Object, Object)方法;
- Parameters:
obj- 对象element- 元素- Returns:
- 是否包含
-
isNull
检查对象是否为null- Parameters:
obj- 对象- Returns:
- 是否为null
-
isNotNull
检查对象是否不为null- Parameters:
obj- 对象- Returns:
- 是否不为null
-
isEmpty
判断指定对象是否为空,支持类型包括:- Parameters:
obj- 被判断的对象- Returns:
- 是否为空,如果类型不支持,返回false
- See Also:
-
isNotEmpty
判断指定对象是否为非空- Parameters:
obj- 被判断的对象- Returns:
- 是否不为空,如果类型不支持,返回true
- See Also:
-
defaultIfNull
public static <T> T defaultIfNull(T object, T defaultValue) 如果给定对象为null返回默认值ObjectKit.defaultIfNull(null, null); // = null ObjectKit.defaultIfNull(null, ""); // = "" ObjectKit.defaultIfNull(null, "zz"); // = "zz" ObjectKit.defaultIfNull("abc", *); // = "abc" ObjectKit.defaultIfNull(Boolean.TRUE, *); // = Boolean.TRUE- Type Parameters:
T- 对象类型- Parameters:
object- 被检查对象,可能为nulldefaultValue- 被检查对象为null返回的默认值,可以为null- Returns:
- 被检查对象不为
null返回原值,否则返回默认值
-
defaultIfNull
如果给定对象不为null返回原值, 否则返回Supplier.get()提供的默认值- Type Parameters:
T- 被检查对象类型- Parameters:
source- 被检查对象,可能为nulldefaultSupplier- 为空时的默认值提供者- Returns:
- 被检查对象不为
null返回原值,否则返回Supplier.get()提供的默认值
-
defaultIfNull
public static <T,R> R defaultIfNull(T source, Function<? super T, ? extends R> handler, Supplier<? extends R> defaultSupplier) 如果给定对象不为null返回自定义handler处理后的结果,否则返回Supplier.get()提供的默认值- Type Parameters:
T- 被检查对象类型R- 返回值类型- Parameters:
source- 被检查对象,可能为nullhandler- 非空时自定义的处理方法defaultSupplier- 为空时的默认值提供者- Returns:
- 被检查对象不为
null返回处理后的结果,否则返回Supplier.get()提供的默认值
-
apply
如果指定的对象不为null,则应用提供的映射函数并返回结果,否则返回null。- Type Parameters:
T- 输入对象的类型R- 映射函数的返回类型- Parameters:
source- 要检查的对象handler- 要应用的映射函数- Returns:
- 映射函数的结果, 如果输入对象为 null,则返回 null
-
accept
如果指定的对象不为null,则执行Consumer处理source,否则不进行操作- Type Parameters:
T- 输入对象的类型- Parameters:
source- 要检查的对象consumer- source处理逻辑
-
defaultIfNull
public static <T,R> R defaultIfNull(T source, Function<? super T, ? extends R> handler, R defaultValue) 如果给定对象不为null返回自定义handler处理后的结果,否则返回默认值- Type Parameters:
T- 被检查对象类型R- 返回值类型- Parameters:
source- 被检查对象,可能为nullhandler- 非空时自定义的处理方法defaultValue- 为空时的默认返回值- Returns:
- 被检查对象不为
null返回处理后的结果,否则返回默认值
-
clone
public static <T> T clone(T obj) 克隆对象- 如果对象是数组,则等同于
ArrayKit.clone(Object); - 如果对象实现了
Cloneable接口,调用Object.clone()方法; - 如果对象实现了
Serializable接口,执行深度克隆; - 不符合上述任意情况则返回
null;
- Type Parameters:
T- 对象类型- Parameters:
obj- 被克隆对象- Returns:
- 克隆后的对象
- See Also:
- 如果对象是数组,则等同于
-
cloneIfPossible
public static <T> T cloneIfPossible(T obj) 返回克隆后的对象,如果克隆失败,返回原对象- Type Parameters:
T- 对象类型- Parameters:
obj- 对象- Returns:
- 克隆对象或原对象
- See Also:
-
cloneByStream
public static <T> T cloneByStream(T obj) 序列化后拷贝流的方式克隆 若对象未实现Serializable接口,则返回null- Type Parameters:
T- 对象类型- Parameters:
obj- 被克隆对象- Returns:
- 克隆后的对象
- Throws:
InternalException- IO异常和ClassNotFoundException封装- See Also:
-
isBasicType
是否为基本类型,包括包装类型和原始类型- Parameters:
object- 被检查对象,null返回false- Returns:
- 是否为基本类型
- See Also:
-
isValidIfNumber
是否为有效的数字,主要用于检查浮点数是否为有意义的数值 若对象不为Number类型,则直接返回true,否则:- 若对象类型为
Double,则检查Double.isInfinite()或Double.isNaN(); - 若对象类型为
Float,则检查Float.isInfinite()或Float.isNaN();
- Parameters:
obj- 被检查对象- Returns:
- 检查结果,非数字类型和
null将返回true - See Also:
- 若对象类型为
-
getTypeArgument
获得给定类的第一个泛型参数- Parameters:
obj- 被检查的实体对象- Returns:
Class
-
getTypeArgument
获得给定类指定下标的泛型参数- Parameters:
obj- 被检查的实体对象index- 泛型类型的索引号,即第几个泛型类型- Returns:
Class- See Also:
-
toString
将对象转为字符串- 若对象为
null,则返回“null”; - 若对象为
Map,则返回Map.toString(); - 若对象为其他类型,则调用
Convert.toString(Object)进行转换;
- Parameters:
obj- Bean对象- Returns:
- 转换后的字符串
- See Also:
- 若对象为
-
nullSafeEquals
确定给定的对象是否相等,如果两个对象都是null, 则返回true;如果只有一个对象是null, 则返回false- Parameters:
o1- 第一个比较对象o2- 第二个比较对象- Returns:
- 给定对象是否相等
- See Also:
-