java 中如何判断一个未知对象是否为空呢?
下面是一个通用的方法,判断字符串是否为空,集合是否为空,数组是否为空:
/** * 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty * * @param obj * @return */ public static boolean isNullOrEmpty(Object obj) { if (obj == null) return true; if (obj instanceof CharSequence) return ((CharSequence) obj).length() == 0; if (obj instanceof Collection) return ((Collection) obj).isEmpty(); if (obj instanceof Map) return ((Map) obj).isEmpty(); if (obj instanceof Object[]) { Object[] object = (Object[]) obj; if (object.length == 0) { return true; } boolean empty = true; for (int i = 0; i < object.length; i++) { if (!isNullOrEmpty(object[i])) { empty = false; break; } } return empty; } return false; }
参考:org.apache.commons.lang.StringUtils
应用场景:
读取excel文件,转化为一个二维数组:Object[][] arrays
但是excel中有空行,所以需要过滤Object[][] arrays中的空的一维数组:
/*** * 过滤数组中的空元素 * * * @param arrays * @return */ public static Object[][] filterEmpty(Object[][] arrays) { int sumNotNull = 0; /*** * 统计非空元素的总个数 */ for (int i = 0; i < arrays.length; i++) { Object object = arrays[i]; if (!ValueWidget.isNullOrEmpty(object) && !SystemUtil.isNullOrEmpty((Object[]) object)) {// 判断元素是否为空 sumNotNull = sumNotNull + 1; } } Object[][] filtedObjs = new Object[sumNotNull][]; int index = 0; for (int i = 0; i < arrays.length; i++) { Object[] object_tmp = arrays[i]; if (!ValueWidget.isNullOrEmpty(object_tmp) && !SystemUtil.isNullOrEmpty((Object[]) object_tmp)) {// 判断元素是否为空 filtedObjs[index++] = object_tmp; } } return filtedObjs; }
参阅附件中的方法com.common.util.SystemUtil.filterEmpty
判断对象的所有成员变量是否为空
/*** * Determine whether the object's fields are empty * * @param obj * @param isExcludeZero :true:数值类型的值为0,则当做为空;----false:数值类型的值为0,则不为空 * * @return * @throws SecurityException * @throws IllegalArgumentException * @throws NoSuchFieldException * @throws IllegalAccessException */ public static boolean isNullObject(Object obj, boolean isExcludeZero) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { if(ValueWidget.isNullOrEmpty(obj)){//对象本身就为null return true; } List<Field> fieldList = ReflectHWUtils.getAllFieldList(obj.getClass()); boolean isNull = true; for (int i = 0; i < fieldList.size(); i++) { Field f = fieldList.get(i); Object propertyValue = null; try { propertyValue = getObjectValue(obj, f); } catch (NoSuchFieldException e) { e.printStackTrace(); } if (!ValueWidget.isNullOrEmpty(propertyValue)) {// 字段不为空 if (propertyValue instanceof Integer) {// 是数字 if (!((Integer) propertyValue == 0 && isExcludeZero)) { isNull = false; break; } } else if (propertyValue instanceof Double) {// 是数字 if (!((Double) propertyValue == 0 && isExcludeZero)) { isNull = false; break; } }else if (propertyValue instanceof Float) {// 是数字 if (!((Float) propertyValue == 0 && isExcludeZero)) { isNull = false; break; } }else if (propertyValue instanceof Short) {// 是数字 if (!((Short) propertyValue == 0 && isExcludeZero)) { isNull = false; break; } }else { isNull = false; break; } } } return isNull; }
测试:
@Test public void test_isNullObject() throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { Person2 p = new Person2(); Assert.assertEquals(true, ReflectHWUtils.isNullObject(p, true)); Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, false)); p.setAddress("beijing"); Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, true)); Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, false)); p.setAddress(null); p.setId(0); Assert.assertEquals(true, ReflectHWUtils.isNullObject(p, true)); Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, false)); }
Person2 源代码(省略getter,setter方法):
import java.sql.Timestamp; public class Person2 { private int id; private int age; private double weight; private String personName; private Timestamp birthdate; public String identitify; protected String address; String phone; }
相关推荐
java判断对象是否为空
java 判断对象是否为空.如String,Character,Object[]
在Java编程中,判断对象是否为空是一个常见的任务,特别是在处理数据和验证输入时。这篇文章将深入探讨如何在Java中检查对象是否为`null`或空字符串,并提供一个实用的工具类示例,帮助开发者实现这一功能。 首先,...
java判空工具类 可以判断字符串数组,字符串类型,List对象集合,Map集合map,object>,map和多个String参数,对象类型,是否为...java判断对象属性是否全部为空,只要有一个属性不为空,那么就不是所有的属性值都为空。
Java中判断对象是否为空的方法的详解 在 Java 中,判断对象是否为空是非常重要的操作。下面是 Java 中判断对象是否为空的方法的详解。 使用 StringUtils 判断对象是否为空 在 Java 中,有两个常用的 StringUtils ...
在Java编程中,判断对象是否为空是一个至关重要的实践,它能有效地防止NullPointerException异常的发生,确保程序的健壮性。在本文中,我们将深入探讨几种优雅地判断对象为空的方法,包括基本对象、集合类如List、...
判断某年是否为润年是日期判断的基本方法之一。该方法可以使用以下代码实现: ```java public static boolean isLeapYear(int year) { return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } ...
在Java编程中,判断列表(List)是否为空是常见的操作,特别是在处理数据集合时。这里我们将深入探讨如何正确地检查List是否为空,并分析不同判断方式的差异。 首先,我们要理解`list != null`这个条件判断。这个...
在处理Map时,MapUtils类(如在Apache Commons Collections中)提供了创建预定义大小的Map,或者检查Map是否为空等便捷功能。 对于日期和时间的操作,Java 8引入了新的日期/时间API,包括LocalDate、LocalTime、...
EmptyUtils.java---Java验证对象是否为空的工具类,工具可判断List,String,Integer,Object,Object[]类型的对象是否为空。
Java 判断是否空的方法 在 Java 编程中,判断一个对象、字符串、数组或集合是否为空是非常重要的。...Java 中判断是否空的方法有多种,我们可以根据实际情况选择合适的方法来判断对象、字符串、数组或集合是否为空。
在进行大量计算时,为了性能考虑,可以使用`BigDecimal.valueOf()`静态工厂方法,它会复用已存在的BigDecimal实例,避免重复创建对象。 `MathContext`是另一个重要的概念,它定义了计算的精度和舍入模式。例如,`...
本文将详细介绍如何在JSP(JavaServer Pages)页面中通过JavaScript来判断文本框是否为空,并提供具体的实现代码示例。 #### 一、问题背景 在进行用户登录或注册等操作时,通常需要收集用户的某些信息,如用户名、...
如果需要判断对象是否为空: <#if name??> …… </#if> 当然也可以通过设置默认值${name!”}来避免对象为空的错误。如果name为空,就以默认值(“!”后的字符)显示。 对象user,name为user的属性的...
本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。 首先,我们需要区分`null`和空字符串`""`。`null`表示变量...
在Java编程语言中,判断字符串`String`是否为空是一个常见的需求。这通常涉及到对字符串对象的检查,确保它们既不是`null`也不是空字符串。在本文中,我们将深入探讨几种不同的方法来完成这个任务,并分析它们的效率...
本文将深入探讨Java中导入和判断Excel的使用方法,结合实例分析,帮助你全面理解这一技术。 首先,Java与Excel的交互通常依赖于第三方库,如Apache POI或JExcelAPI。Apache POI是目前最常用的一个,它提供了丰富的...
在Java编程中,判断目录是否为空是一个常见的任务,特别是在处理文件系统操作时。这个实例教程将深入探讨如何通过Java API来实现这一功能。在本文中,我们将详细讲解相关的Java知识,包括文件和目录操作,以及如何...