Package org.aoju.bus.core.toolkit
Class ObjectKit
java.lang.Object
org.aoju.bus.core.toolkit.ObjectKit
一些通用的函数
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> voidcleanInitValue(T bean) 清空对象中所有属性的初始值static <T> Tclone(T obj) 克隆对象 如果对象实现Cloneable接口,调用其clone方法 如果实现Serializable接口,执行深度克隆 否则返回nullstatic <T> TcloneByStream(T obj) 序列化后拷贝流的方式克隆 对象必须实现Serializable接口static <T> TCloneObject(Class<T> clazz, Object bean) 克隆有序列化的对象static <T> TCloneObject(T bean) 克隆有序列化的对象static int比较2个版本号static <T> Comparator<T>中文字符比较器static <T> Comparator<T>中文字符比较器static <T extends Comparable<? super T>>
intcompare(T c1, T c2) null安全的对象比较,null对象小于任何对象static <T extends Comparable<? super T>>
intcompare(T c1, T c2, boolean isNullGreater) null安全的对象比较static <T> intcompare(T c1, T c2, Comparator<T> comparator) 对象比较,比较结果取决于comparator,如果被比较对象为null,传入的comparator对象应处理此情况 如果传入comparator为null,则使用默认规则比较(此时被比较对象必须实现Comparable接口) 一般而言,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0static boolean对象中是否包含元素static <T extends CharSequence>
TdefaultIfBlank(T text, Supplier<? extends T> handle) 如果被检查对象为null或 "" 或 空白字符串时,返回默认值(由 defaultValueSupplier 提供);否则直接返回static <T extends CharSequence>
TdefaultIfBlank(T text, T defaultValue) 如果给定对象为null或者""或者空白符返回默认值static <T> TdefaultIfEmpty(String text, Supplier<? extends T> handle, T defaultValue) 如果给定对象为null或者""返回默认值, 否则返回自定义handle处理后的返回值static <T extends CharSequence>
TdefaultIfEmpty(T text, Supplier<? extends T> handle) 如果被检查对象为null或 "" 时,返回默认值(由 defaultValueSupplier 提供);否则直接返回static <T extends CharSequence>
TdefaultIfEmpty(T text, T defaultValue) 如果给定对象为null或者 "" 返回默认值static <T> TdefaultIfNull(Object source, Supplier<? extends T> handle, T defaultValue) 如果给定对象为null返回默认值, 如果不为null 返回自定义handle处理后的返回值static <T> TdefaultIfNull(T source, Supplier<? extends T> defaultValueSupplier) 如果被检查对象为null, 返回默认值(由 defaultValueSupplier 提供);否则直接返回static <T> TdefaultIfNull(T object, T defaultValue) 如果给定对象为null返回默认值static <T> Tdeserialize(byte[] bytes) byte反序列化 对象必须实现Serializable接口static booleanequal(byte[] byte1, byte[] byte2) 比较两个摘要是否相等static boolean比较两个对象是否相等static boolean比较两个对象是否相等static Field[]getAllFields(Object object) 获取包括父类所有的属性static ObjectgetAttributeValue(Object obj, String attrName) 从对象中取值static ClassgetClassByName(String classAllName) 依据class的名称获取对应classgetFieldNames(Class clazz) 获取类的所有属性与属性的类型获取对象中的所有属性static <T> Class<T>getGeneric(Class clazz) 依据类,获取该类的泛型classgetNotNullFields(Object bean) 获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况) (不会清空初始值)getNotNullFields(Object bean, boolean hasInitValue) 获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况)获取对象中的非空属性(属性如果是对象,则会嵌套map)getNotNullFieldsParam(Object bean) 获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况) (不会清空初始值)getNotNullFieldsParam(Object bean, boolean hasInitValue) 获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况)static voididentityToString(Appendable appendable, Object object) 如果类没有覆盖toString本身,则附加由Object生成的toString.static StringidentityToString(Object object) 获取如果类没有覆盖toString本身,则Object将生成的toString.static voididentityToString(StringBuffer buffer, Object object) 如果类没有覆盖toString本身,则附加由Object生成的toString.static voididentityToString(StringBuilder builder, Object object) 如果类没有覆盖toString本身,则附加由Object生成的toString.static voididentityToString(TextBuilder builder, Object object) 如果类没有覆盖toString本身,则附加由Object生成的toString.static <T> TinitObject(Class<T> clazz, Map<String, Object> attrMap) 初始化对象static void将新数据的非空属性值插入到基本数据中static booleanisAllEmpty(Object... objs) 是否全都为null或空对象,通过isEmpty(Object)判断元素static booleanisAllNotEmpty(Object... objs) 是否全都不为null或空对象,通过isEmpty(Object)判断元素static boolean确定给定的对象是一个数组:对象数组还是基元数组static booleanisBaseClass(Object value) 校验是否是九种基础类型(即:非用户定义的类型)static boolean判断指定对象是否为空,支持:static boolean判断对象为falsestatic final booleanisNotEmpty(Object object) 判断对象是否为NotEmpty(!null或元素大于0) 实用于对如下对象做判断:String Collection及其子类 Map及其子类static boolean检查对象是否不为nullstatic boolean检查对象是否为nullstatic boolean判断对象为truestatic int计算对象长度,如果是字符串调用其length函数, 集合类调用其size函数, 数组调用其length属性, 其他可遍历对象遍历计算长度static <E extends Comparable<? super E>>
Comparator<E>获取自然排序器,即默认排序器static boolean比较两个对象是否不相等static booleannullSafeEquals(Object o1, Object o2) 确定给定的对象是否相等,如果两个对象都是null, 则返回true;如果只有一个对象是null, 则返回falsestatic <T> TparseByteForObj(byte[] bts) 将byte字节转换成对象static byte[]parseObjForByte(Object obj) 将对象转换为byte数据static <T> TparseToObject(Object value, Class<T> type) 转换类型static <T> byte[]serialize(T obj) 对象序列化 对象必须实现Serializable接口static voidsetAttribute(Object obj, String attrName, Object value) 给对象的属性赋值static byte[]将对象进行序列化static <T> TtoObject(byte[] bts) 将序列化数据转换为对象static <T> T将base64的序列化数据转换为对象static Object[]toObjectArray(Object source) 将给定的数组(可能是原始数组)转换为对象数组(如果需要原始包装器对象) 一个null源值将被转换为一个空的对象数组.static String将Object转为String 策略为:
-
Constructor Details
-
ObjectKit
public ObjectKit()
-
-
Method Details
-
isNull
检查对象是否为null- Parameters:
obj- 对象- Returns:
- 是否为null
-
isNotNull
检查对象是否不为null- Parameters:
obj- 对象- Returns:
- 是否为null
-
defaultIfNull
public static <T> T defaultIfNull(T object, T defaultValue) 如果给定对象为null返回默认值- Type Parameters:
T- 对象类型- Parameters:
object- 被检查对象,可能为nulldefaultValue- 被检查对象为null返回的默认值,可以为null- Returns:
- 被检查对象为{ null}返回默认值,否则返回原值
-
defaultIfNull
如果被检查对象为null, 返回默认值(由 defaultValueSupplier 提供);否则直接返回- Type Parameters:
T- 对象类型- Parameters:
source- 被检查对象defaultValueSupplier- 默认值提供者- Returns:
- 被检查对象为
null返回默认值,否则返回自定义handle处理后的返回值
-
defaultIfNull
如果给定对象为null返回默认值, 如果不为null 返回自定义handle处理后的返回值- Type Parameters:
T- 被检查对象为null返回默认值,否则返回自定义handle处理后的返回值- Parameters:
source- Object 类型对象handle- 非空时自定义的处理方法defaultValue- 默认为空的返回值- Returns:
- 被检查对象为{ null}返回默认值,否则返回原值
-
defaultIfEmpty
如果被检查对象为null或 "" 时,返回默认值(由 defaultValueSupplier 提供);否则直接返回- Type Parameters:
T- 对象类型(必须实现CharSequence接口)- Parameters:
text- 被检查对象handle- 默认值提供者- Returns:
- 被检查对象为
null返回默认值,否则返回自定义handle处理后的返回值
-
defaultIfEmpty
如果给定对象为null或者""返回默认值, 否则返回自定义handle处理后的返回值- Type Parameters:
T- 被检查对象为null或者 ""返回默认值,否则返回自定义handle处理后的返回值- Parameters:
text- String 类型handle- 自定义的处理方法defaultValue- 默认为空的返回值- Returns:
- 被检查对象为{ null}返回默认值,否则返回原值
-
defaultIfEmpty
如果给定对象为null或者 "" 返回默认值ObjectKit.defaultIfEmpty(null, null) = null ObjectKit.defaultIfEmpty(null, "") = "" ObjectKit.defaultIfEmpty("", "zz") = "zz" ObjectKit.defaultIfEmpty(" ", "zz") = " " ObjectKit.defaultIfEmpty("abc", *) = "abc"- Type Parameters:
T- 对象类型(必须实现CharSequence接口)- Parameters:
text- 被检查对象,可能为nulldefaultValue- 被检查对象为null或者 ""返回的默认值,可以为null或者 ""- Returns:
- 被检查对象为
null或者 ""返回默认值,否则返回原值
-
defaultIfBlank
如果给定对象为null或者""或者空白符返回默认值ObjectKit.defaultIfBlank(null, null) = null ObjectKit.defaultIfBlank(null, "") = "" ObjectKit.defaultIfBlank("", "zz") = "zz" ObjectKit.defaultIfBlank(" ", "zz") = "zz" ObjectKit.defaultIfBlank("abc", *) = "abc"- Type Parameters:
T- 对象类型(必须实现CharSequence接口)- Parameters:
text- 被检查对象,可能为nulldefaultValue- 被检查对象为null或者 ""或者空白符返回的默认值,可以为null或者 ""或者空白符- Returns:
- 被检查对象为
null或者 ""或者空白符返回默认值,否则返回原值
-
defaultIfBlank
如果被检查对象为null或 "" 或 空白字符串时,返回默认值(由 defaultValueSupplier 提供);否则直接返回- Type Parameters:
T- 对象类型(必须实现CharSequence接口)- Parameters:
text- 被检查对象handle- 默认值提供者- Returns:
- 被检查对象为
null返回默认值,否则返回自定义handle处理后的返回值
-
isTrue
判断对象为true- Parameters:
object- 对象- Returns:
- 对象是否为true
-
isFalse
判断对象为false- Parameters:
object- 对象- Returns:
- 对象是否为false
-
isArray
确定给定的对象是一个数组:对象数组还是基元数组- Parameters:
object- 要检查的对象- Returns:
- the true/false
-
isEmpty
判断指定对象是否为空,支持:1. CharSequence 2. Map 3. Iterable 4. Iterator 5. Array
- Parameters:
object- 被判断的对象- Returns:
- 是否为空,如果类型不支持,返回false
-
isNotEmpty
判断对象是否为NotEmpty(!null或元素大于0) 实用于对如下对象做判断:String Collection及其子类 Map及其子类- Parameters:
object- 待检查对象- Returns:
- boolean 返回的布尔值
-
isAllEmpty
是否全都为null或空对象,通过isEmpty(Object)判断元素- Parameters:
objs- 被检查的对象,一个或者多个- Returns:
- 是否都为空
-
isAllNotEmpty
是否全都不为null或空对象,通过isEmpty(Object)判断元素- Parameters:
objs- 被检查的对象,一个或者多个- Returns:
- 是否都不为空
-
equals
比较两个对象是否相等- Parameters:
obj1- 对象1obj2- 对象2- Returns:
- 是否相等
- See Also:
-
equal
比较两个对象是否相等- Parameters:
obj1- 对象1obj2- 对象2- Returns:
- 是否相等
-
equal
public static boolean equal(byte[] byte1, byte[] byte2) 比较两个摘要是否相等- Parameters:
byte1- 字节比较信息1byte2- 字节比较信息2- Returns:
- 如果相等,则为true,否则为false
-
notEqual
比较两个对象是否不相等- Parameters:
obj1- 对象1obj2- 对象2- Returns:
- 是否不等
-
length
计算对象长度,如果是字符串调用其length函数, 集合类调用其size函数, 数组调用其length属性, 其他可遍历对象遍历计算长度- Parameters:
obj- 被计算长度的对象- Returns:
- 长度
-
contains
对象中是否包含元素- Parameters:
obj- 对象element- 元素- Returns:
- 是否包含
-
clone
public static <T> T clone(T obj) 克隆对象 如果对象实现Cloneable接口,调用其clone方法 如果实现Serializable接口,执行深度克隆 否则返回null- Type Parameters:
T- 对象类型- Parameters:
obj- 被克隆对象- Returns:
- 克隆后的对象
-
toString
将Object转为String 策略为:1、null转为"null" 2、调用Convert.toStr(Object)转换
- Parameters:
obj- Bean对象- Returns:
- Bean所有字段转为Map后的字符串
-
cloneByStream
public static <T> T cloneByStream(T obj) 序列化后拷贝流的方式克隆 对象必须实现Serializable接口- Type Parameters:
T- 对象类型- Parameters:
obj- 被克隆对象- Returns:
- 克隆后的对象
- Throws:
InstrumentException- IO异常和ClassNotFoundException封装
-
compare
null安全的对象比较,null对象小于任何对象- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为null- Returns:
- 比较结果,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0
- See Also:
-
compare
比较2个版本号- Parameters:
v1- 版本1v2- 版本2complete- 是否完整的比较两个版本- Returns:
- (v1 小于 v2) ? -1 : ((v1 等于 v2) ? 0 : 1)
-
compare
null安全的对象比较- Type Parameters:
T- 被比较对象类型(必须实现Comparable接口)- Parameters:
c1- 对象1,可以为nullc2- 对象2,可以为nullisNullGreater- 当被比较对象为null时是否排在前面,true表示null大于任何对象,false反之- Returns:
- 比较结果,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0
- See Also:
-
naturalComparator
获取自然排序器,即默认排序器- Type Parameters:
E- 排序节点类型- Returns:
- 默认排序器
-
compare
对象比较,比较结果取决于comparator,如果被比较对象为null,传入的comparator对象应处理此情况 如果传入comparator为null,则使用默认规则比较(此时被比较对象必须实现Comparable接口) 一般而言,如果c1 < c2,返回数小于0,c1==c2返回0,c1 > c2 大于0- Type Parameters:
T- 被比较对象类型- Parameters:
c1- 对象1c2- 对象2comparator- 比较器- Returns:
- 比较结果
- See Also:
-
compare
public static <T> int compare(T o1, T o2, boolean isNullGreater) 自然比较两个对象的大小,比较规则如下:1、如果实现Comparable调用compareTo比较 2、o1.equals(o2)返回0 3、比较hashCode值 4、比较toString值
- Type Parameters:
T- 被比较对象类型- Parameters:
o1- 对象1o2- 对象2isNullGreater- null值是否做为最大值- Returns:
- 比较结果,如果o1 < o2,返回数小于0,o1==o2返回0,o1 > o2 大于0
-
compare
中文字符比较器- Type Parameters:
T- 对象类型- Parameters:
object- 从对象中提取中文(参与比较的内容)- Returns:
- 中文字符比较器
-
compare
中文字符比较器- Type Parameters:
T- 对象类型- Parameters:
object- 从对象中提取中文(参与比较的内容)reverse- 是否反序- Returns:
- 中文字符比较器
-
getAllFields
获取包括父类所有的属性- Parameters:
object- 对象- Returns:
- the field
-
toByte
将对象进行序列化- Parameters:
obj- 对象- Returns:
- 对象序列化后的数据
-
toObject
将base64的序列化数据转换为对象- Type Parameters:
T- 对象- Parameters:
base64- 经过base64的序列化对象数据- Returns:
- 原对象
-
toObject
public static <T> T toObject(byte[] bts) 将序列化数据转换为对象- Type Parameters:
T- 对象- Parameters:
bts- 序列化后的对象数据- Returns:
- 原对象
-
getClassByName
依据class的名称获取对应class- Parameters:
classAllName- 类的全称(如: java.lang.String)- Returns:
- 返回依据类名映射的class对象
-
initObject
初始化对象- Type Parameters:
T- 对象- Parameters:
clazz- 创建的对象的类型attrMap- 初始对象的属性值- Returns:
- 创建的对象
-
setAttribute
给对象的属性赋值- Parameters:
obj- 对象attrName- 对象的属性名value- 对象的属性值
-
getAttributeValue
从对象中取值- Parameters:
obj- 对象attrName- 要取值的属性名- Returns:
- 值
-
getFields
获取对象中的所有属性- Parameters:
bean- 对象- Returns:
- 属性和值(Map[属性名, 属性值])
-
getFieldNames
获取类的所有属性与属性的类型- Parameters:
clazz- 类- Returns:
- 该类的所有属性名与属性类型(包含父类属性)
-
getNotNullFields
获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况)- Parameters:
bean- 对象hasInitValue- 是否过滤掉初始值(true:过滤掉)- Returns:
- 非空属性和值(Map[属性名, 属性值])
-
getNotNullFields
获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况) (不会清空初始值)- Parameters:
bean- 对象- Returns:
- 非空属性和值(Map[属性名, 属性值])
-
getNotNullFieldsParam
获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况) (不会清空初始值)request param
- Parameters:
bean- 对象- Returns:
- 非空属性和值(Map[属性名, 属性值])
-
getNotNullFieldsParam
获取对象中的非空属性(属性如果是对象,则只会在同一个map中新增,不会出现map嵌套情况)- Parameters:
bean- 对象hasInitValue- 是否过滤掉初始值(true:过滤掉)- Returns:
- 非空属性和值(Map[属性名, 属性值])
-
getNotNullFieldsForStructure
获取对象中的非空属性(属性如果是对象,则会嵌套map)- Parameters:
bean- 对象- Returns:
- 非空属性和值(Map[属性名, 属性值])
-
getGeneric
依据类,获取该类的泛型class- Type Parameters:
T- 对象- Parameters:
clazz- 类对象- Returns:
- 泛型类型
-
parseByteForObj
public static <T> T parseByteForObj(byte[] bts) 将byte字节转换成对象- Type Parameters:
T- 对象- Parameters:
bts- 字节数据- Returns:
- 对象
-
parseObjForByte
将对象转换为byte数据- Parameters:
obj- 对象- Returns:
- byte数据
-
parseToObject
转换类型- Type Parameters:
T- 对象- Parameters:
value- 字符串的值type- 要转换的类型- Returns:
- 转换后的值
-
isBaseClass
校验是否是九种基础类型(即:非用户定义的类型)- Parameters:
value- 字符串的值 要校验的值- Returns:
- 是否是基础类型(true : 已经是基础类型了)
-
CloneObject
克隆有序列化的对象- Type Parameters:
T- 要返回的数据类型- Parameters:
clazz- 反射类bean- 所有继承过BaseBean的对象- Returns:
- 克隆后的对象
-
CloneObject
public static <T> T CloneObject(T bean) 克隆有序列化的对象- Type Parameters:
T- 要返回的数据类型- Parameters:
bean- 要克隆的对象- Returns:
- 克隆后的对象
-
insertObj
将新数据的非空属性值插入到基本数据中- Parameters:
baseData- 基本数据newData- 新数据
-
cleanInitValue
public static <T> void cleanInitValue(T bean) 清空对象中所有属性的初始值- Type Parameters:
T- 对象- Parameters:
bean- 对象
-
identityToString
获取如果类没有覆盖toString本身,则Object将生成的toString.null将返回nullObjectKit.identityToString(null) = null ObjectKit.identityToString("") = "java.lang.String@1e23" ObjectKit.identityToString(Boolean.TRUE) = "java.lang.Boolean@7fa"- Parameters:
object- 创建toString的对象可以是null- Returns:
- 如果传入
null,则默认的toString文本或null
-
identityToString
如果类没有覆盖toString本身,则附加由Object生成的toString.null将为这两个参数中的任何一个抛出NullPointerExceptionObjectKit.identityToString(appendable, "") = appendable.append("java.lang.String@1e23" ObjectKit.identityToString(appendable, Boolean.TRUE) = appendable.append("java.lang.Boolean@7fa" ObjectKit.identityToString(appendable, Boolean.TRUE) = appendable.append("java.lang.Boolean@7fa")- Parameters:
appendable- 可以附加的信息object- 要为其创建toString的对象- Throws:
IOException- 如果发生I/O错误
-
identityToString
如果类没有覆盖toString本身,则附加由Object生成的toString.null将为这两个参数中的任何一个抛出NullPointerExceptionObjectKit.identityToString(builder, "") = builder.append("java.lang.String@1e23" ObjectKit.identityToString(builder, Boolean.TRUE) = builder.append("java.lang.Boolean@7fa" ObjectKit.identityToString(builder, Boolean.TRUE) = builder.append("java.lang.Boolean@7fa")- Parameters:
builder- 要附加到的生成器object- 要为其创建toString的对象
-
identityToString
如果类没有覆盖toString本身,则附加由Object生成的toString.null将为这两个参数中的任何一个抛出NullPointerExceptionObjectKit.identityToString(buf, "") = buf.append("java.lang.String@1e23" ObjectKit.identityToString(buf, Boolean.TRUE) = buf.append("java.lang.Boolean@7fa" ObjectKit.identityToString(buf, Boolean.TRUE) = buf.append("java.lang.Boolean@7fa")- Parameters:
buffer- 要追加的缓冲区object- 要为其创建toString的对象
-
identityToString
如果类没有覆盖toString本身,则附加由Object生成的toString.null将为这两个参数中的任何一个抛出NullPointerExceptionObjectKit.identityToString(builder, "") = builder.append("java.lang.String@1e23" ObjectKit.identityToString(builder, Boolean.TRUE) = builder.append("java.lang.Boolean@7fa" ObjectKit.identityToString(builder, Boolean.TRUE) = builder.append("java.lang.Boolean@7fa")- Parameters:
builder- 要附加到的生成器object- 要为其创建toString的对象
-
nullSafeEquals
确定给定的对象是否相等,如果两个对象都是null, 则返回true;如果只有一个对象是null, 则返回false- Parameters:
o1- 第一个比较对象o2- 第二个比较对象- Returns:
- 给定对象是否相等
- See Also:
-
toObjectArray
将给定的数组(可能是原始数组)转换为对象数组(如果需要原始包装器对象) 一个null源值将被转换为一个空的对象数组.- Parameters:
source- 数组- Returns:
- 对应的对象数组
-
serialize
public static <T> byte[] serialize(T obj) 对象序列化 对象必须实现Serializable接口- Type Parameters:
T- 对象类型- Parameters:
obj- 要被序列化的对象- Returns:
- 序列化后的字节码
-
deserialize
public static <T> T deserialize(byte[] bytes) byte反序列化 对象必须实现Serializable接口- Type Parameters:
T- 对象类型- Parameters:
bytes- 反序列化的字节码- Returns:
- 反序列化后的对象
-