Java递归获取某实体除特殊字段外,其他字段是否全部为null,特殊字段为空则为判断实体是否全部字段均为空

本文介绍了一种递归算法,用于检查Java实体类中除指定特殊字段外的所有其他字段是否均为null。该方法不支持实体内含基本数据类型、非静态内部类及List类型的字段检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
	 * 递归获取某实体除特殊字段外,其他字段是否全部为null
	 *
	 * 注意:1、不支持实体内含有基本数据类型的情况;2、不支持实体内部含有非静态内部类的情况;3、暂不支持除特殊字段外的其他字段为List的情况
	 *
	 * @param object 需要判断的实体
	 * @param specialFieldSet 特殊字段(可以为null的字段)
	 * @return 除specialFieldSet字段外全部字段为null,则返回true;否则返回false
	 */
	public static boolean getOtherFieldAllNullExceptSpecial(Object object, Set<String> specialFieldSet) throws Exception {
		Class clazz = object.getClass();
		Field[] fields = clazz.getDeclaredFields();
		for (Field field : fields) {
			if (CollectionUtils.isEmpty(specialFieldSet) || !specialFieldSet.contains(field.getName())) {
				field.setAccessible(true);
				Object obj = field.get(object);
				if (obj != null) {
					if (obj instanceof Number || obj instanceof Boolean || obj instanceof String || obj instanceof Character) {
						return false;
					} else {
						// 递归
						if (!getOtherFieldAllNullExceptSpecial(obj, specialFieldSet)) {
							return false;
						}
					}
				}
			}
		}
		return true;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值