Class ObjectKit

java.lang.Object
org.miaixz.bus.core.xyz.ObjectKit

public class ObjectKit extends Object
对象工具类,包括判空、克隆、序列化等操作

原数组相关操作见:ArrayKit.hasBlank(CharSequence...)ArrayKit.isAllBlank(CharSequence...)等等

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • ObjectKit

      public ObjectKit()
  • Method Details

    • equals

      public static boolean equals(Object obj1, Object obj2)
      比较两个对象是否相等,满足下述任意条件即返回true
      • 若两对象皆为BigDecimal,且满足0 == obj1.compareTo(obj2)
      • 若两对象都为数组,调用Arrays.equals完成判断
      • obj1 == null && obj2 == null
      • obj1.equals(obj2)
      Parameters:
      obj1 - 对象1
      obj2 - 对象2
      Returns:
      是否相等
    • notEquals

      public static boolean notEquals(Object obj1, Object obj2)
      比较两个对象是否不相等
      Parameters:
      obj1 - 对象1
      obj2 - 对象2
      Returns:
      是否不等
      See Also:
    • length

      public static int length(Object obj)
      计算对象长度,支持类型包括:
      Parameters:
      obj - 被计算长度的对象
      Returns:
      长度
    • contains

      public static boolean contains(Object obj, Object element)
      检查obj中是否包含element,若objnull,则直接返回false。 支持类型包括:
      Parameters:
      obj - 对象
      element - 元素
      Returns:
      是否包含
    • isNull

      public static boolean isNull(Object obj)
      检查对象是否为null
      Parameters:
      obj - 对象
      Returns:
      是否为null
    • isNotNull

      public static boolean isNotNull(Object obj)
      检查对象是否不为null
      Parameters:
      obj - 对象
      Returns:
      是否不为null
    • isEmpty

      public static boolean isEmpty(Object obj)
      判断指定对象是否为空,支持类型包括:
      Parameters:
      obj - 被判断的对象
      Returns:
      是否为空,如果类型不支持,返回false
      See Also:
    • isNotEmpty

      public static boolean isNotEmpty(Object obj)
      判断指定对象是否为非空
      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 - 被检查对象,可能为null
      defaultValue - 被检查对象为null返回的默认值,可以为null
      Returns:
      被检查对象不为 null 返回原值,否则返回默认值
    • defaultIfNull

      public static <T> T defaultIfNull(T source, Supplier<? extends T> defaultSupplier)
      如果给定对象不为null 返回原值, 否则返回 Supplier.get() 提供的默认值
      Type Parameters:
      T - 被检查对象类型
      Parameters:
      source - 被检查对象,可能为null
      defaultSupplier - 为空时的默认值提供者
      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 - 被检查对象,可能为null
      handler - 非空时自定义的处理方法
      defaultSupplier - 为空时的默认值提供者
      Returns:
      被检查对象不为 null 返回处理后的结果,否则返回 Supplier.get() 提供的默认值
    • apply

      public static <T, R> R apply(T source, Function<T,R> handler)
      如果指定的对象不为 null,则应用提供的映射函数并返回结果,否则返回 null
      Type Parameters:
      T - 输入对象的类型
      R - 映射函数的返回类型
      Parameters:
      source - 要检查的对象
      handler - 要应用的映射函数
      Returns:
      映射函数的结果, 如果输入对象为 null,则返回 null
    • accept

      public static <T> void accept(T source, Consumer<T> consumer)
      如果指定的对象不为 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 - 被检查对象,可能为null
      handler - 非空时自定义的处理方法
      defaultValue - 为空时的默认返回值
      Returns:
      被检查对象不为 null 返回处理后的结果,否则返回默认值
    • clone

      public static <T> T clone(T obj)
      克隆对象
      1. 如果对象是数组,则等同于ArrayKit.clone(Object)
      2. 如果对象实现了Cloneable接口,调用 Object.clone()方法;
      3. 如果对象实现了Serializable接口,执行深度克隆;
      4. 不符合上述任意情况则返回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

      public static boolean isBasicType(Object object)
      是否为基本类型,包括包装类型和原始类型
      Parameters:
      object - 被检查对象,null返回false
      Returns:
      是否为基本类型
      See Also:
    • isValidIfNumber

      public static boolean isValidIfNumber(Object obj)
      是否为有效的数字,主要用于检查浮点数是否为有意义的数值 若对象不为Number类型,则直接返回true,否则:
      Parameters:
      obj - 被检查对象
      Returns:
      检查结果,非数字类型和null将返回true
      See Also:
    • getTypeArgument

      public static Class<?> getTypeArgument(Object obj)
      获得给定类的第一个泛型参数
      Parameters:
      obj - 被检查的实体对象
      Returns:
      Class
    • getTypeArgument

      public static Class<?> getTypeArgument(Object obj, int index)
      获得给定类指定下标的泛型参数
      Parameters:
      obj - 被检查的实体对象
      index - 泛型类型的索引号,即第几个泛型类型
      Returns:
      Class
      See Also:
    • toString

      public static String toString(Object obj)
      将对象转为字符串
      • 若对象为null,则返回“null”;
      • 若对象为Map,则返回Map.toString()
      • 若对象为其他类型,则调用Convert.toString(Object)进行转换;
      Parameters:
      obj - Bean对象
      Returns:
      转换后的字符串
      See Also:
    • nullSafeEquals

      public static boolean nullSafeEquals(Object o1, Object o2)
      确定给定的对象是否相等,如果两个对象都是null, 则返回true;如果只有一个对象是null, 则返回false
      Parameters:
      o1 - 第一个比较对象
      o2 - 第二个比较对象
      Returns:
      给定对象是否相等
      See Also: