判断某个对象属性值都不为空/至少有一个属性值不为空
如果是字符串属性则不为null和不为""
有时候,controller参数接收json对象,我们需要判断该对象中的属性值是否都不为空(都是必须的)/至少有一个属性值不为空,其中字符串属性不为null和不为“”,如果对象参数多,controller里面遍历每一个属性去判断,代码冗余。
当然还有另外的方法,比如spring框架中的注解@NotNull,@NotBlank,@Valid。
import org.springframework.util.StringUtils;import java.lang.reflect.Field;
import java.lang.reflect.Method;/*** Title:判断某个对象属性值都不为空,字符串属性不为空和不为空字符串* Description:利用类的反射获取,前提是javabean中的属性都是包装类* @author WZQ* @version 1.0.0* @date 2020/4/19*/
public class ObjIsUtil {/*** 根据属性名获取属性值*/private static Object getFieldValueByName(String fieldName, Object o) {try {String firstLetter = fieldName.substring(0, 1).toUpperCase();String getter = "get" + firstLetter + fieldName.substring(1);Method method = o.getClass().getMethod(getter, new Class[]{});Object value = method.invoke(o, new Object[]{});return value;} catch (Exception e) {return null;}}/*** 判断对象中的属性值是否都不为空,字符串属性的需要判断空字符串*/public static Boolean isAllNotNull(Object o) {//获取对象的属性数组,反射Field[] fields = o.getClass().getDeclaredFields();String name = "";for (int i = 0; i < fields.length; i++) {//属性名name = fields[i].getName();//pojos和dto含有serialVersionUID,得去掉该字段的判断if (name.equals("serialVersionUID"))continue;//当前属性名的值Object fieldValueByName = getFieldValueByName(name, o);//值为nullif (fieldValueByName == null)return false;//如果是String,判断空字符串""if (fields[i].getType().equals(String.class)){String s = (String) fieldValueByName;if (StringUtils.isEmpty(s)){return false;}}}return true;}/*** 判断对象中的属性值至少有一个不为空*/public static Boolean oneNotNull(Object o) {//获取对象的属性数组,反射Field[] fields = o.getClass().getDeclaredFields();String name = "";for (int i = 0; i < fields.length; i++) {//属性名name = fields[i].getName();//当前属性名的值Object fieldValueByName = getFieldValueByName(name, o);//如果是String,判断空字符串""if (fields[i].getType().equals(String.class)){String s = (String) fieldValueByName;if (!StringUtils.isEmpty(s)){return true;}}else{//值为nullif (fieldValueByName != null)return true;}}return false;}// public static void main(String[] args) {// Usertest usertest = new Usertest("1","name",1);
// Usertest usertest1 = new Usertest("","",null);
// Usertest usertest2 = new Usertest("1","",null);
// Usertest usertest3 = new Usertest("1",null,1);
// System.out.println(isAllNotNull(usertest));//true
// System.out.println(isAllNotNull(usertest1));//false
// System.out.println(isAllNotNull(usertest2));//false
// System.out.println(isAllNotNull(usertest3));//false
// System.out.println(oneNotNull(usertest));//true
// System.out.println(oneNotNull(usertest1));//false
// }}
判断某个对象属性值都不为空/至少有一个属性值不为空相关推荐
- java 合并对象中属性_Java2个对象形集合按某一个属性合并
侃侃尔雅 不知道你说的是不是这个: package com.segmentfault.qa.java; import java.util.*; public class ListMergeTest { ...
- Python类与对象最全总结大全(类、实例、属性方法、继承、派生、多态、内建函数)
目录 面向对象编程 常用术语/名词解释 抽象/实现 封装/接口 合成 派生/继承/继承结构 泛化/特化 多态 自省/反射 访问限制 私有属性和公有属性 私有方法的设置 类 创建类 声明与定义 类属性 ...
- mybatisplus修改单个属性_第二节 官封弼马温——类的属性
<西游记>第2集 官封弼马温 美猴王战胜了混世魔王,花果山上喜气洋洋,小猴们每日操演武艺,十分快乐.悟空闯入东海龙宫,向龙王索取镇海神针--如意金箍棒.这棒虽重一万三千五百斤,却大可撑天着 ...
- 类属性、类方法;私有属性、公有属性;私有方法、公有方法;静态属性、静态方法;python的命名规范__xx__\__xx\_xx(自用笔记)
Ⅰ.类属性.类方法(类和实例都能调用类属性和类方法) 类是一个特殊的对象,Python 中 一切皆对象:class AAA: #定义的类属于 类对象obj1 = AAA() #属于 实例对象 除了封装 ...
- 【C语言】猜随机数小游戏(知识点:如何产生一个随机值)
主要思想:建立一个函数打印游戏菜单,建立一个函数运行游戏,在主函数中用循环重复运行. #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> ...
- [c#]通过一个枚举值获取另一个枚举值———通过国家全称获取国家简称
概述:两个枚举间可通过int值进行关联,从而实现通过一个枚举值获取另一枚举值,而达到本案例中通过国家全称获取国家简称,反之亦然. 实现:直接看代码: 先定义两个枚举 public enum Count ...
- java 判断对象的属性是否为空,如何判断一个对象里的属性是否都为空的
怎么判断一个对象里的属性是否都为空的 怎么判断一个对象里的属性是否都为空的,或者判断该对象是否是一个实体! ------解决方案-------------------- 引用:怎么判断一个对象里的属性 ...
- 使用postman传list参数,使用@RequestBody接收list对象接收不到,对象的属性值都是null
controller层是这样写的,因为之前接收list值的时候也是这样去写的,所以这部分代码应该是对的 这个是我的实体,使用了lombok来写get和set方法. 然后使用postman传一个list ...
- 判断数组对象属性值是否相等
最近做一个文件上传批量导入数据功能,但因后台返回的数据没做属性值重复处理,需要前端处理: 返回的数据结构如下: , 因项目的要求,返回来的所有值都要,所以使用数组的filter,indexOf方法并不 ...
最新文章
- 工业互联网平台创新发展白皮书(2018)
- 前向传播和反向传播_深度学习的地基模块:模型、参数、非线性、前向传播、反向偏微分
- 【线上分享】音频多麦盲分技术
- OpenCL-3-同步机制
- Istio 1.9 发布——重点改善 Istio 的 Day2 操作
- 20220104:力扣第274场周赛(下)
- sublime text3 sql 格式化
- Django入门10--admin增强
- 3Dmax软件安装问题解决方法
- python拟合二元一次函数
- opencapwap简要分析
- 小巷开店问题(第三题)
- 上海生活品质远不如深圳——深圳与上海比较
- 折扣力度自动计算器 | 财富自由必备小工具
- 资深HR分享:常见面试技巧,都是套路!
- 酒店价格、集合、文件名称
- Android zip文件解压缩工具类
- utils.py 文件的理解:一些小脚本文件
- 第三十九天:linux内核裁剪
- #软件测试之环境搭建#
热门文章
- 什么是嵌入式系统?什么是嵌入式操作系统?
- 解决word2019安装完visio变得卡顿的问题
- 7 张图三维组态编辑器图片,教你轻松数字孪生工厂
- Python主要用来做什么 它的应用大全有哪些
- 无需QQ密保直接修改QQ密码
- [CS229学习笔记] 5.判别学习算法与生成学习算法,高斯判别分析,朴素贝叶斯,垃圾邮件分类,拉普拉斯平滑
- 设置textarea不可拖动
- 打出英文名字中间那个点
- 软件项目管理-项目人力资源管理
- 三位数自动递增编号函数_Excel单元格自动填充编号、序列、18位长数字与数字+字母+数字...