iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java:如何更优雅的处理空值?
  • 937
分享到

Java:如何更优雅的处理空值?

2023-06-03 12:06:21 937人浏览 八月长安
摘要

在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此

在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。

有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。

此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。

在这里小编建了一个前端学习交流扣扣群:132667127,我自己整理的最新的前端资料和高级开发教程,如果有想需要的,可以加群一起学习交流

业务中的空值

场景

存在一个UserSearchService用来提供用户查询的功能:

public interface UserSearchService{ List<User> listUser(); User get(Integer id);}

问题现场

对于面向对象语言来讲,抽象层级特别的重要。尤其是对接口的抽象,它在设计和开发中占很大的比重,我们在开发时希望尽量面向接口编程

对于以上描述的接口方法来看,大概可以推断出可能它包含了以下两个含义:

  • listUser(): 查询用户列表
  • get(Integer id): 查询单个用户

在所有的开发中,XP推崇的TDD模式可以很好的引导我们对接口的定义,所以我们将TDD作为开发代码的”推动者”。

对于以上的接口,当我们使用TDD进行测试用例先行时,发现了潜在的问题:

  • listUser() 如果没有数据,那它是返回空集合还是null呢?
  • get(Integer id) 如果没有这个对象,是抛异常还是返回null呢?

深入listUser研究

我们先来讨论

listUser()

这个接口,我经常看到如下实现:

public List<User> listUser(){ List<User> userList = userListRepostity.selectByExample(new UserExample()); if(CollectionUtils.isEmpty(userList)){//spring util工具类 return null; } return userList;}

这段代码返回是null,从我多年的开发经验来讲,对于集合这样返回值,最好不要返回null,因为如果返回了null,会给调用者带来很多麻烦。你将会把这种调用风险交给调用者来控制。

如果调用者是一个谨慎的人,他会进行是否为null的条件判断。如果他并非谨慎,或者他是一个面向接口编程的狂热分子(当然,面向接口编程是正确的方向),他会按照自己的理解去调用接口,而不进行是否为null的条件判断,如果这样的话,是非常危险的,它很有可能出现空指针异常!

Java:如何更优雅的处理空值?

--结束END--

本文标题: Java:如何更优雅的处理空值?

本文链接: https://www.lsjlt.com/news/234253.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java:如何更优雅的处理空值?
    在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此...
    99+
    2023-06-03
  • Java如何优雅的进行判空
    1、前言 实际项目中我们会有很多地方需要判空校验,如果不做判空校验则可能产生NullPointerException异常。 针对异常的处理我们在上一篇有提及: 先来看一下实际项目中一些判空方式 通常我们判断一个对象是否为Null,可以使...
    99+
    2023-09-06
    java jvm servlet
  • 如何利用Proxy更优雅地处理异常详解
    代码不会全部按照我们的预期运行,可能会有意料之外的情况,为了保证程序的健壮性,要进行异常处理。 比如一个对象的所有方法,都应该做异常处理,但是,如果每个方法都加 try catch ...
    99+
    2022-11-13
  • 在Java中如何处理数组中的空值?
    在Java中,数组是一种常见的数据类型,它可以存储一组相同类型的数据。但是,在实际开发中,我们经常会遇到数组中存在空值的情况。这时,我们需要对数组中的空值进行处理,以确保程序的正确性和稳定性。 本文将介绍在Java中如何处理数组中的空值,包...
    99+
    2023-09-30
    数组 bash windows
  • Java开发中如何优雅地处理日志?
    在Java开发中,日志处理是非常重要的一环。它可以帮助我们及时发现并解决系统中的问题,提升系统的可靠性和稳定性。但是,如果不合理地处理日志,就会造成不必要的性能浪费,甚至会给系统带来安全隐患。那么,在Java开发中,如何优雅地处理日志呢?...
    99+
    2023-09-05
    日志 开发技术 分布式
  • JavaScript如何优雅的处理async/await
    这篇文章给大家分享的是有关JavaScript如何优雅的处理async/await的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。优雅的处理 async/await使用方法:无需每次使用 async/await 都...
    99+
    2023-06-27
  • 基于Day.js更优雅的处理JavaScript中的日期
    目录为什么使用day.jsMoment.jsDay.js没有day.js我们怎么办Day.js 例子1. 获取两个日期相差的天数2. 检查日期是否合法3. 获取输入日期月份的天数4....
    99+
    2022-11-12
  • Python如何优雅地处理NaN
    背景 很多数据不可避免的会遗失掉,或者采集的时候采集对象不愿意透露,这就造成了很多NaN(Not a Number)的出现。这些NaN会造成大部分模型运行出错,所以对NaN的处理很有必要。 方法 1、简单粗暴地去掉 有如下data...
    99+
    2023-01-31
    优雅 Python NaN
  • JavaScript中async await更优雅的错误处理方式
    目录背景 为什么要错误处理 async await 更优雅的错误处理 小结 总结背景 团队来了新的小伙伴,发现我们的团队代码规范中,要给 async  await 添加 ...
    99+
    2022-11-12
  • 容器中的Java和NumPy:如何优雅地处理数据?
    随着数据科学和人工智能的蓬勃发展,数据的处理和分析已经成为了每个开发人员必须面对的问题。在这个过程中,Java和NumPy是两个广泛使用的工具,它们都有着优秀的性能和强大的数据处理能力。本文将探讨如何在容器中使用Java和NumPy来处理数...
    99+
    2023-07-03
    numy 函数 容器
  • Android如何优雅的处理重复点击
    目录之前的处理方式 现在的处理方式 其他场景处理重复点击 间接设置点击 富文本 列表 数据绑定 总结 项目地址 一般手机上的 Android App,主要的交互方式是点击。用户在点击...
    99+
    2022-11-11
  • Java开发者必备:如何优雅地处理NumPy对象?
    NumPy是一个广泛使用的Python库,它提供了高效的多维数组操作和数学函数。然而,Java开发者也可以通过使用ND4J库来处理NumPy对象。本文将介绍如何在Java中优雅地处理NumPy对象。 一、安装ND4J ND4J是一个开源的...
    99+
    2023-06-16
    响应 numpy 对象
  • 如何分析Freemarker空值处理及默认值
    这篇文章将为大家详细讲解有关如何分析Freemarker空值处理及默认值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。FreeMarker中输出null值会报错,如果希望对象为null时,什...
    99+
    2023-06-26
  • 详解C#WinForm如何优雅的处理异常
    目录场景需求开发环境开发工具实现代码实现效果代码解析场景 在运行、调试代码的时候,往往会遇到一些异常情况,很多时候我们代码写得足够健壮,所以出现的概率比较低,但是如果一旦出现,我们又...
    99+
    2022-11-13
  • Java 响应数组面试题:如何优雅地处理数组?
    在 Java 编程中,数组是一个非常重要的数据结构。它可以用来存储一组相同类型的元素,并且可以通过索引来访问这些元素。在面试中,经常会出现关于数组的问题,特别是关于如何优雅地处理数组的问题。在本文中,我们将探讨一些常见的数组面试题,并提供...
    99+
    2023-09-13
    响应 数组 面试
  • 详解Reactor如何优雅Exception异常处理
    目录异常处理的底层机制实操 —— try-catch-finally的平替1. 降级兜底 - onErrorReturn/onErrorResume2. 打印...
    99+
    2023-02-15
    Reactor Exception异常处理 Reactor Exception异常 Reactor Exception
  • 如何进行C++代码的优雅异常处理?
    如何进行C++代码的优雅异常处理?在编程过程中,异常处理是一个重要的方面。异常处理可以帮助我们在代码执行过程中处理意外情况,保证程序的稳定性和可靠性。在C++中,异常处理的机制能有效地捕获和处理错误,从而帮助我们优雅地处理异常情况。本文将介...
    99+
    2023-11-02
    异常处理 (Exception Handling) C++编程 (C++ programming) 优雅异常 (Grac
  • Java函数处理大数据:如何优雅地进行重定向?
    在Java编程中,我们经常需要处理大量的数据。而重定向是一个常用的技术,可以将程序的输出和错误信息写入到文件中,方便后续的分析和处理。本文将介绍如何优雅地进行重定向,并提供相关代码演示。 什么是重定向? 在Java中,重定向是指将程序...
    99+
    2023-08-23
    函数 大数据 重定向
  • 一文教你如何优雅处理Golang中的异常
    我们在使用Golang时,不可避免会遇到异常情况的处理,与Java、Python等语言不同的是,Go中并没有try...catch...这样的语句块,我们知道在Java中使用try....
    99+
    2022-11-11
  • 【Java】如何优雅的关闭线程池
    文章目录 背景一、线程中断 interrupt二、线程池的关闭 shutdown 方法2.1、第一步:advanceRunState(SHUTDOWN) 把线程池置为 SHUTDOWN2.2、...
    99+
    2023-09-21
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作