java 判空工具方法大全

  • 前言
  • 一、一般类型的判空
    • 1、String 类型判空
    • 2、包装类型判空
  • 二、类对象判空
    • 1、类对象判空
  • 三、容器类型判空
    • 1、List、Set 判空
    • 2、Map 判空

前言

在实际开发中,应充分考虑操作对象为空的情况,请对程序中使用的对象进行严格的判空,否则会导致程序向数据库存储一些空数据或错误数据,或导致程序往预期外的方向执行,或者导致程序空对象异常等。
比如:

  1. 接收 Long 类型数据作为 username 用户账号进行登录验证时,该数据不应该为空。
  2. 根据 username 用户账号查询该用户对象后,进行 getPassword 操作,若该对象为空,则产生空对象异常。
  3. 对 List 空对象列表进行操作,产生空对象异常。
  4. 如此等等。

严格的对象判空有利于:

  1. 提前排除掉一些用户的错误操作,进行错误拦截,防止接收一些无用数据或错误数据。
  2. 防止未充分考虑到对象的数据范围,而导致程序的执行流程与预期不一致,导致程序错误。
  3. 防止对空容器的 get(0) 等操作引发的空对象异常。
  4. 防止对空对象的 getName 等获取属性操作而引发的空对象异常。

一、一般类型的判空

1、String 类型判空

String 类型不能用 == null 来判空,String 类型的排除空值的情况有如下几种:

  1. 值为 null
  2. 值为空字符串 “”
  3. 值为空格 " "

要想在传值时排除这几种情况,可以用 org.apache.commons 包中的 StringUtils 工具类。或者其他包中的 StringUtils 或 StringUtil 工具类。

(1)排除 String 值为 null 、或 “” 空字符串时,使用 StringUtils.isEmpty() 方法。

  • 排除值为 null
  • 排除值为空字符串
import org.apache.commons.lang3.StringUtils;String str = new String();
if (StringUtils.isEmpty(str)) {return "字符串不能为空";
}

(2)排除 String 值为 null 、或 “” 空字符串、或空格字符串时,使用 StringUtils.isBlank() 方法。

  • 排除值为 null
  • 排除值为空字符串 “”
  • 排除值为空格 " "
import org.apache.commons.lang3.StringUtils;String str = new String();
if (StringUtils.isBlank(str)) {return "字符串不能为空或空字符串";
}

2、包装类型判空

包装类 Integer、Long、Double 等包装类型的判空同一般类对象判空相同,使用 == null

Long studentId = new Long();
if (null == studentId) {return "Long对象不能为空";
}

二、类对象判空

1、类对象判空

类对象的判空用 ==null就足够了。

Student student = new Student();
if (null == student) {return "类对象不能为空";
}

【注意】
在获取类对象

三、容器类型判空

1、List、Set 判空

List、Set 可以使用 org.apache.commons 提供的 CollectionUtils 工具类的判空。或者其他包提供的 CollectionUtils 和 CollectionUtil 工具类。

import org.apache.commons.collections4.CollectionUtils;List<String> list= new ArrayList<>();CollectionUtils.isEmpty(list);  // true
CollectionUtils.isNotEmpty(list);  // false

2、Map 判空

Map可以使用 org.apache.commons 提供的 MapUtils 工具类进行判空。或者其他包提供的 MapUtils 和 MapUtil 工具类。

import org.apache.commons.collections4.MapUtilsHashMap<String, Long> map = new HashMap<>();MapUtils.isEmpty(map);  // true
MapUtils.isNotEmpty(map);  // false

Java 判空工具方法大全相关推荐

  1. 【java】数组判空工具类

    数组判空工具类 package com.dost.base.utils.extend;import java.util.List;/*** 数组工具*/ public abstract class A ...

  2. JS判断对象是否为空的方法大全

    JS判断对象是否为空的方法大全 1.将json对象转化为json字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify( ...

  3. Java 优雅判空的方法

    为了避免 NullPointerException 出现,我们经常会进行如下操作. if (object != null) {object.do(); } 那么每次使用一个不确定的对象,都需要进行一次 ...

  4. JAVA字符串判空的方法

    1.记录自己工作中的问题:针对某些字符串进行判空时,出现的BUG StringUtils.hasText StringUtils.hasText(null) = falseStringUtils.ha ...

  5. java判空null前后,关于java:引不要再使用null判空了

    以下文章来源于Hollis ,作者上帝爱吃苹果 对于Java程序员来说,null是令人头痛的货色.时常会受到空指针异样(NPE)的骚扰.连Java的发明者都抵赖这是他的一项微小失误. 那么,有什么方法 ...

  6. StringUtils isEmpty 和 isBlank 的区别 CollectionUtils判空的方法

    本文讨论的 StringUtils 属于package org.apache.commons.lang; 文章目录 字符串判空检查 "" 和 null 的区别 isEmpty(St ...

  7. Java操作文件的方法大全

    标题 最新工作涉及到文件操作的内容,顺带花点时间把各种业务场景的方法都总结出来,供大家参考 对应Maven依赖.这块提醒千万别倒错包,这块的方法本人都亲测过,如果报错看下依赖是否正确 <depe ...

  8. 优雅参数判空_java 方法参数怎么优雅校验?

    不邀自来.这个问题,我之前也考虑过,包括异常处理,都是很繁琐的,不是核心的业务逻辑,但是充斥在代码的各个角落,很繁琐. 我的解决方案,是通过aop+注解的方式,无侵入式的解决. 1.第一步声明自定义注 ...

  9. java常用开发工具下载大全

    Maven-3.5.2下载:https://pan.baidu.com/s/1iOzrLbJSvlmbofv6GlAT_g 密码:zeda 新版eclipse下载:https://pan.baidu. ...

最新文章

  1. linux的上传工具,Linux下精简版上传工具lrzsz
  2. Android NDK开发-3-环境搭建
  3. social science and IP
  4. ng-controller and ng-model的工作原理
  5. 使用ASP.NET Core 3.x 构建 RESTful API - 3.2 路由
  6. 32和64位jvm_我应该使用32位还是64位JVM?
  7. java 文件压缩_java实现文件压缩
  8. 一个单独的UDP数据包能够放入数据的最大长度是65508
  9. 笔记本电脑换内存条流程
  10. 关于iconfont字体图标在IE上无法显示的问题
  11. 仙道服务器维护,【正式服】2月14日例行更新维护公告
  12. IEEE认证Pdf格式失败问题
  13. 后端优化 | VINS-Mono 论文公式推导与代码解析分讲
  14. mysql修改游戏元宝_页游源码【武斗乾坤】自带安装启动教程+元宝游戏数据修改教程+自由一键游戏启动服务端...
  15. 【Docker】error pulling image configuration: download failed after attempts=6: dial tc
  16. layim之修改群聊头像
  17. Android桌面小组件---Widget组件开发(什么是Widget)
  18. 低端Windows平板汇总
  19. ADIS16400/ADIS16405带磁力计的三轴惯性传感器(2)
  20. 思科金牌、银牌代理商名录

热门文章

  1. VMware设置共享文件夹之后/mnt/hgfs里面什么也没有
  2. picoCTF - RE - Hurry up! Wait!
  3. python和perl语言的区别_Perl 和 Python 的比较 【转】
  4. vmware workstation 9 安装Ubuntu 12.04 WIN7 64 位 出现问题及解决办法
  5. i5 1135G7和R5 5600H 选哪个好
  6. 复现Dense Extreme Inception Network(pytorch)
  7. 统计文章单词频数(C语言)
  8. 软件开发Share the Cakes
  9. python123怎么注销账号_怎么注销账号
  10. docker容器的资源消耗