文章目录

  • 前言
  • 一、object==null判断对象为空
  • 二、判读对象的值为空
    • 1.利用反射编写判空工具类
    • 2.测试
  • 总结

前言

小伙伴们大家好,最近一段时间家里有点事,没空写博客,现在事忙完啦。今天趁周末写一篇文章,希望对大家有所帮助。java编写接口时总是会遇到传多个参数的情况,此时我们一般会习惯用对象封装。那么前端就需要给我们传递一个对象,而对象传过来后我们的必要操作就是首先判空,避免后续操作产生空指针或者其他错误。

一、object==null判断对象为空

这里我也是写了一个测试接口,首先使用object==null判断,话不多说上代码

controller层代码

import com.trs.dto.Boo;
import com.trs.service.FirstService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;/*** Demo class** @author crazy-water* @date 11/27/2021 18:21*/
@RequestMapping("first")
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class firstWeekendController {private final FirstService firstService;@PostMapping("isNull")public void isNull(@RequestBody(required = false) Boo boo) {firstService.isNull(boo);}}

service层代码

import com.sun.xml.internal.ws.util.StringUtils;
import com.trs.dto.Boo;
import com.trs.service.FirstService;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;/*** Demo class** @author crazy-water* @date 11/27/2021 18:28*/
@Service
public class FirstServiceImpl implements FirstService {@Overridepublic void isNull(Boo boo) {System.out.println(boo);String a = boo==null ? "boo是空" : "boo非空";System.out.println("==null判断结果是-----"+a);}
}

这种情况比较简单,就不多做介绍,直接上结果(此处采用的测试工具是postman)

第一种情况不传对象,结果如下,显然接口收不到对象,那么对象肯定是空不存在任何引用。

第二种 传空对象,这种情况是我们最需要注意的,往往出问题的就是这一种,我们今天着重讲的也是这一种。结果如下图,明明传递的是空对象,但是结果确是对象非空,曾经这个问题也曾困扰过我。后来仔细思考后发现这个对象只是值为空,但是 这个对象确是存在的,其以及被创建出来啦。举个例子,有一个空桶,虽然桶是空的,但是桶确是存在的。由此可见,object==null只能判断有没有桶,却不能判断桶是否为空的情况,由此引入判断桶空的方法,见步骤二。


二、判读对象的值为空

1.利用反射编写判空工具类

在这里就把工具类贴出来了,有需要的小伙伴可以直接打包带走。


import java.lang.reflect.Field;
import java.lang.reflect.Type;/*** <p>Description: 判断对象是否为空,进一步判断对象中的属性是否都为空 </p>* @author crazy-water* @date 2018年11月12日*/
public class JudgeObjIsNullUtil {/*** 判断对象是否为空,且对象的所有属性都为空* ps: boolean类型会有默认值false 判断结果不会为null 会影响判断结果*     序列化的默认值也会影响判断结果* @param object* @return*/public static   boolean judgeObjIsNull(Object object){Class clazz = object.getClass(); // 得到类对象Field fields[] = clazz.getDeclaredFields(); // 利用反射得到所有属性boolean flag = true; //定义标志flag/*** 循环遍历反射得到的属性数组,判断每个属性值是否为空*/for(Field f : fields){f.setAccessible(true);//由于考虑到某些私有属性直接访问肯能访问不到,此属性设置为true确保可以访问到Object fieldValue = null;try {fieldValue = f.get(object); //得到属性值Type fieldType =f.getGenericType();//得到属性类型String fieldName = f.getName(); // 得到属性名System.out.println("属性类型:"+fieldType+",属性名:"+fieldName+",属性值:"+fieldValue);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}if(fieldValue != null){  //只要有一个属性值不为null 就返回false 表示对象不为nullflag = false;break;}}return flag;}}

2.测试

使用上述的发射工具类,看看是否可以判断空对象,结果如下图,可见可以正常判断,并且打印出各个属性的具体情况。


import com.trs.dto.Boo;
import com.trs.service.FirstService;
import com.trs.util.JudgeObjIsNullUtil;
import org.springframework.stereotype.Service;/*** Demo class** @author crazy-water* @date 11/27/2021 18:28*/
@Service
public class FirstServiceImpl implements FirstService {@Overridepublic void isNull(Boo boo) {//        System.out.println(boo);
//
//        String a = boo==null ? "boo是空" : "boo非空";
//
//        System.out.println("==null判断结果是-----"+a);boolean b = JudgeObjIsNullUtil.judgeObjIsNull(boo);System.out.println(b==true ?"boo为空" :"boo不为空");}
}

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

学会了对象判空的方法,可以减少程序后面可能会出的Bug,加油吧,小伙伴们,快快动起来,代码搞起来!

java判断对象为空(对象为空和对象的值为空的区别)相关推荐

  1. java null转空_Java对象为空时,将null转换为 保存值为空的属性

    Java对象为空时,不显示该对象属性,或者将null转换为"" 第一种方法: @JsonInclude(JsonInclude.Include.NON_NULL) private ...

  2. java 判断是不是基本类型

    需求:业务上需要备份数据,记录字段差异,如果字段是对象的话,就不记录. 思路:判断字段是基本类型,则执行业务代码. /** * 判断object是否为基本类型 * @param object * @r ...

  3. java判断对象无数据_java 对象属性不能为空判断

    如何判断一个对象里的属性是否都为空的 怎么判断一个对象里的属性是否都为空的怎么判断一个对象里的属性是否都为空的,或者判断该对象是否是一个实体!引用:怎么判断一个对象里的属性是否都为空的,或者判断该对象 ...

  4. java 判断对象的属性是否为空_Java 判断实体对象及所有属性是否为空的操作

    1.判断实体对象是否为空 2.判断对象所有属性是否为空 3.特别注意,实体类中如果有基本数据类型,会影响判断 package com.liuxd.object; import org.apache.c ...

  5. java 判断一个对象是否为空对象

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 最近项目中遇到一个问题,在用户没填数据的时候,我们需要接收从前端传过来的对象为null,但是前端说他 ...

  6. java判断bean是否为空,java判断对象是否为空

    对 Java 语言来说,一切皆是对象.把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作.一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的 ...

  7. java 判断对象是否为空_java怎么判断对象是否为空

    java怎么判断对象是否为空 发布时间:2020-06-22 11:28:11 来源:亿速云 阅读:122 作者:Leah 本篇文章展示了java判断对象是否为空的具体操作,代码简明扼要容易理解,绝对 ...

  8. Java判断对象是否为空

    文章目录 引言 一.数组 1.1 数组长度 1.2 isEmpty 二.集合 2.1 isEmpty 2.2 集合长度 三.字符串 3.1 isEmpty和isBlank 1. 使用 2. 区别 3. ...

  9. java 获取对象属性值为空或者非空的属性名称

    目录 1. 获取对象属性值为空的属性名称 2. 复制对象非空属性值 1. 获取对象属性值为空的属性名称 /** * @Title: getNullPropertyNames* @Description ...

最新文章

  1. 解决Echarts窗口自适应失效问题
  2. 王志成/王之泰《面向对象程序设计(java)》第十一周学习总结
  3. 520 钻石争霸赛 题解
  4. word如何一键全选_学会这七个Word小技巧,五分钟完成3小时的工作
  5. html5 电流效果,在HTML5 Canvas 2D上绘制云雾中的电流动画特效
  6. 深度评测阿里云、百度云、腾讯云和华为云
  7. QQ 5.0的一些特效学习 一
  8. 按键手机java下载_经典按键java手机游戏
  9. python3 append的用法_python中append的用法
  10. win7安装OpenCV:计算机中丢失opencv_world300d.dll
  11. 机械键盘改罗技优联无线键盘
  12. 淘宝/天猫整店采集(店铺宝贝列表接口)
  13. U盘重装系统-非常简单制作方法
  14. Autofac的高级使用——Autofac.2.6.3.862
  15. 删除文件过一会又回来_内存卡数据删了又自动回来怎么回事
  16. 远程桌面连接不上,三种方法教你重启服务器
  17. Android驻留广播,Android实现Service永久驻留
  18. 曾李青投资:看面相测智商 腾迅 创始人 天使投资 首席运营官
  19. PID调节之比例(P)调节
  20. android五子棋论文,基于Android五子棋的设计与实现论文.doc

热门文章

  1. 什么是promise?什么是回调函数?
  2. 两个虚拟机相互登录,使用密码与使用密钥
  3. centos stream 8 升级和切换python版本的简单方法
  4. 安卓开发实战,用HMS MLKit华为机器学习服务开发一个拍照翻译小程序
  5. win11 + qt everywhere 6.4 软件安装
  6. 安装计算机资源不足,【2人回答】有无大佬知道电脑安装程序时显示系统资源不足无法完成请求怎么解决?-3D溜溜网...
  7. python的lxml库简介_Python lxml库简介
  8. 平面设计专业学什么?平面设计专业有哪些课程?
  9. windows图形编程基础
  10. python 编程之平均值求法以及方差求法