Package org.miaixz.bus.core.xyz
Class ObjectKit
java.lang.Object
org.miaixz.bus.core.center.object.ObjectValidator
org.miaixz.bus.core.xyz.ObjectKit
对象工具类,包括判空、克隆、序列化等操作
原数组相关操作见:
ArrayValidator.hasBlank(CharSequence...)、ArrayValidator.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或数组: 等同于遍历后对其元素调用ObjectValidator.equals(Object, Object)方法;static Class<?> getTypeArgument(Object obj) 获得给定类的第一个泛型参数static Class<?> getTypeArgument(Object obj, int index) 获得给定类指定下标的泛型参数static int计算对象长度,支持类型包括:null:默认返回0; 数组:返回数组长度;CharSequence:返回CharSequence.length();Collection:返回Collection.size();Iterator或Iterable:可迭代的元素数量;Enumeration:返回可迭代的元素数量;static booleannullSafeEquals(Object o1, Object o2) 确定给定的对象是否相等,如果两个对象都是null, 则返回true;如果只有一个对象是null, 则返回falseMethods inherited from class org.miaixz.bus.core.center.object.ObjectValidator
defaultIfNull, defaultIfNull, defaultIfNull, defaultIfNull, equals, isBasicType, isBlankIfString, isEmpty, isEmptyIfString, isNotEmpty, isNotNull, isNull, isValidIfNumber, notEquals
-
Constructor Details
-
ObjectKit
public ObjectKit()
-
-
Method Details
-
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或数组: 等同于遍历后对其元素调用ObjectValidator.equals(Object, Object)方法;
- Parameters:
obj- 对象element- 元素- Returns:
- 是否包含
-
apply
如果指定的对象不为null,则应用提供的映射函数并返回结果,否则返回null。- Type Parameters:
T- 输入对象的类型R- 映射函数的返回类型- Parameters:
source- 要检查的对象handler- 要应用的映射函数- Returns:
- 映射函数的结果, 如果输入对象为 null,则返回 null
-
accept
如果指定的对象不为null,则执行Consumer处理source,否则不进行操作- Type Parameters:
T- 输入对象的类型- Parameters:
source- 要检查的对象consumer- source处理逻辑
-
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:
-
getTypeArgument
获得给定类的第一个泛型参数- Parameters:
obj- 被检查的实体对象- Returns:
Class
-
getTypeArgument
获得给定类指定下标的泛型参数- Parameters:
obj- 被检查的实体对象index- 泛型类型的索引号,即第几个泛型类型- Returns:
Class- See Also:
-
nullSafeEquals
确定给定的对象是否相等,如果两个对象都是null, 则返回true;如果只有一个对象是null, 则返回false- Parameters:
o1- 第一个比较对象o2- 第二个比较对象- Returns:
- 给定对象是否相等
- See Also:
-