博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断某个对象属性值都不为空/至少有一个属性值不为空
阅读量:3940 次
发布时间:2019-05-24

本文共 3341 字,大约阅读时间需要 11 分钟。

如果是字符串属性则不为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); //值为null if (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{
//值为null if (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// }}

转载地址:http://cviwi.baihongyu.com/

你可能感兴趣的文章
创建新项目
查看>>
印刷工艺- 喷墨印刷
查看>>
印刷工艺流程
查看>>
印刷业ERP启蒙
查看>>
Java8 Lambda表达式使用集合(笔记)
查看>>
Java魔法师Unsafe
查看>>
spring cloud java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
查看>>
Centos系统安装MySQL(整理)
查看>>
postgresql计算两点距离(经纬度地理位置)
查看>>
postgres多边形存储--解决 Points of LinearRing do not form a closed linestring
查看>>
postgresql+postgis空间数据库总结
查看>>
spring 之 Http Cache 和 Etag(转)
查看>>
基于Lucene查询原理分析Elasticsearch的性能(转)
查看>>
HttpClient请求外部服务器NoHttpResponseException
查看>>
springCloud升级到Finchley.RELEASE,SpringBoot升级到2.0.4
查看>>
Spring boot + Arthas
查看>>
omitted for duplicate jar包冲突排查
查看>>
如何保证缓存与数据库的双写一致性?
查看>>
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy排查
查看>>
深浅拷贝,深浅克隆clone
查看>>