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

Java 专栏收录该内容
69 篇文章 1 订阅

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;
    }

 

  • 2
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值