21xrx.com
2024-12-23 01:31:15 Monday
登录
文章检索 我的文章 写文章
Java判断对象是否为空的工具类
2023-06-29 10:50:04 深夜i     --     --
Java 判断 对象 工具类

在Java开发中,判断对象是否为空是一项非常重要的任务。这种情况可能会在处理用户输入、检查返回值、遍历数据结构等各种场景下出现。为了避免出现空指针异常,开发人员需要编写一些工具类来帮助判断对象是否为空。

Java开发中,判断对象是否为空非常常见,但是相对来说也较为繁琐,一不留神就会造成空指针异常。因此,开发人员会使用各种方法来检查对象的值,包括使用if语句、三元运算符、try-catch语句等。由于这些检查很常见,因此很自然会想到将它们包装在一个工具类中,以便在整个项目中重复使用。以下就是一个Java判断对象是否为空的工具类:


public class ObjectUtils {

  private ObjectUtils() {}

  /**

   * 判断对象是否为空

   * @param obj 待判断的对象

   * @return 如果对象为空、为null、包含空格或空字符,则返回true,否则返回false

   */

  public static boolean isEmpty(Object obj) {

    if (obj == null)

      return true;

    

    if (obj instanceof CharSequence) {

      return ((CharSequence) obj).length() == 0;

    }

    if (obj.getClass().isArray()) {

      return Array.getLength(obj) == 0;

    }

    if (obj instanceof Collection) {

      return ((Collection<?>) obj).isEmpty();

    }

    if (obj instanceof Map) {

      return ((Map<?, ?>) obj).isEmpty();

    }

    if (obj instanceof Optional) {

      return !((Optional<?>) obj).isPresent();

    }

    return false;

  }

  /**

   * 判断对象是否不为空

   * @param obj 待判断的对象

   * @return 如果对象不为空,则返回true,否则返回false

   */

  public static boolean isNotEmpty(Object obj) {

    return !isEmpty(obj);

  }

}

上面的工具类提供了两个方法:isEmpty(Object obj)和isNotEmpty(Object obj)。前者用于判断一个对象是否为空,后者用于判断对象是否不为空。在isEmpty方法中,首先判断该对象是否为null,如果为null,直接返回true。然后,检查该对象是否是可序列字符集,如果是,则判断其长度是否为0;如果不是,则检查该对象是否为数组、Collection、Map或Optional对象之一,如果是,则分别根据其长度或是否为空来判断是否为空。否则,返回false。在isNotEmpty方法中,只需将isEmpty方法的结果取反即可。

使用这个工具类非常简单:


public class Test {

  public static void main(String[] args) {

    

    String str = "";

    Object[] array = new Object[0];

    List<Object> list = new ArrayList<>();

    Map<Object, Object> map = new HashMap<>();

    Optional<Object> optional = Optional.empty();

    System.out.println(ObjectUtils.isEmpty(str)); // true

    System.out.println(ObjectUtils.isEmpty(array)); // true

    System.out.println(ObjectUtils.isEmpty(list)); // true

    System.out.println(ObjectUtils.isEmpty(map)); // true

    System.out.println(ObjectUtils.isEmpty(optional)); // true

    System.out.println(ObjectUtils.isNotEmpty(str)); // false

    System.out.println(ObjectUtils.isNotEmpty(array)); // false

    System.out.println(ObjectUtils.isNotEmpty(list)); // false

    System.out.println(ObjectUtils.isNotEmpty(map)); // false

    System.out.println(ObjectUtils.isNotEmpty(optional)); // false

  }

}

在上面的示例中,使用了工具类的isEmpty和isNotEmpty方法来检查一些基本的Java对象。由于这个工具类细心而全面地处理了各种情况,因此它是一个非常实用的工具类,可以在Java开发中节省大量的时间和精力。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复