判断Object是否为空的通用方法

1、判断Object是否有空(类型包含CharSequence、Number、Collection、Map、Object[])

public static boolean checkObject(Object object){
   if(object==null){
	   return true;
   }
   if(object instanceof CharSequence){
	   return ((CharSequence)object).length() == 0;
   }
   if(object instanceof Collection){
	   return ((Collection)object).isEmpty();
   }
   if (object instanceof Map){
	   return ((Map)object).isEmpty();
   }
   if(object instanceof Object[]){
	   return ((Object[])object).length == 0;
   }
	return false;
}

2、判断多个参数是否有空

public static boolean checkObjects(Object... objects){
	for (Object obj:objects) {
		if(checkObject(obj)){
			return true;
		}
	}
	return false;
}

3、判断对象的所有属性是否有空

public static <T> boolean checkAll(T model) throws IllegalAccessException {
	List<Field> fields = getAllField(model);
	for (Field field:fields) {
		field.setAccessible(true);
		Object object = field.get(model);
		if(checkObject(object)){
			return true;
		}
	}
	return false;
}

 另一种方式获取属性值

public static <T> boolean checkAllParam(T model) {
	List<Field> fields = getAllField(model);
	for (Field field:fields) {
		String name = field.getName().substring(0,1).toUpperCase()+field.getName().substring(1);
		try {
			Method method = model.getClass().getMethod("get"+name);
			Object object = method.invoke(model);
			if(checkObject(object)){
				return true;
			}
		} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
			e.printStackTrace();
		}
	}
	return false;
}

另附获取到对象的所有字段(包括所有继承的父类)

private static List<Field> getAllField(Object model){
        Class clazz = model.getClass();
        List<Field> fields = new ArrayList<>();
        while (clazz!=null){
            fields.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
            clazz = clazz.getSuperclass();
        }
        return fields;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值