使用空集合或“空白”操作而不是null的主要优点是,大多数情况下,此类对象仍然可以在代码中工作而无需进一步修改.从本质上来说,空值更容易出错.

请使用以下代码,例如:

String[] names = data.getNames();

if (names != null) {

for (String name : names) {

// Do stuff

}

}

需要检查空值,否则您将获得NPE.使用标准for循环不能解决问题.另一方面,如果你知道你将总是得到某种类型的数组,你的代码将正常工作,无需额外的检查.如果数组为空,则循环将不会运行.问题解决了.

对于实现某种形式的操作的代码也是如此.另一个例子:

Action myAction = data.getActionToRun();

if (myAction != null) {

myAction.run();

}

再一次,你需要一个空检查.如果保证操作存在,那么你总是可以调用action.run()而没有任何副作用,但空白操作不会做任何事情.就这么简单.

在许多情况下,如果修改方法返回的方式,则可以简单地丢弃空检查,从而导致更简单易懂的代码.在某些情况下,返回null是正确的选择(例如,从键和值的集合中获取对象),因为没有默认的“无动作”值.但是null表示根本没有值,并且它需要额外的处理作为接收器.使用空白,无动作,非空对象允许数据对象处理错误.这是很好的封装.这是很好的编程.它只是有效.™

最后,返回null肯定不是处理错误的好方法.如果您的代码出现问题,除非您作为程序员犯了编程错误,否则应该永远不会出错,请使用断言或异常.那些都是失败的.不要将null用作失败案例,将其用作简单的缺少值.

在java中null的作用_在java中避免使用!= null有什么好处?相关推荐

  1. java中捕获异常的作用_在Java中捕获通用异常?

    您可以传递Class对象并以编程方式检查. public static void checkForException(String message, Class exceptionType, Expe ...

  2. python中main的作用_浅析python 中__name__ = '__main__' 的作用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  3. python函数中self的作用_在Python中self的用途是什么?

    如果您使用的是Python,那么"自我"一词是无法逃避的.它用于方法定义和变量初始化中.每次定义方法时,都会显式使用self方法.在本文中,我们将按以下顺序深入了解Python的自 ...

  4. python中config方法作用_使用Python中的config配置

    Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置),所以可以自己写一个函数,实现读取config配置. config文件的写法比较简单,[sect ...

  5. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  6. python中syntaxerror什么意思_在Python中,“SyntaxError:调用'print'时缺少括号”是什么意思?...

    此错误消息表示您尝试使用Python 3来关注示例或运行使用Python 2 print 语句的程序: 打印"你好,世界!" 上面的语句在Python 3中不起作用 . 在Pyth ...

  7. distinct返回null报错_在Java中如何避免“!=null”式的判空语句?

    问题描述: 我整天都是在跟Java打交道.我在Java开发中最常用的一段代码就是用object != null在使用对象之前判断是否为空.这么做是为了避免NullPointerException.但是 ...

  8. Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法

    public static void main(String[] args) {} 或者 public static void main(String args[]) {} main方法是我们学习Ja ...

  9. 中去掉外键_【Java笔记】035天,MySQL中的增删改查

    学习Java的第35天. 今天天除了学习MySQL中的各种约束,MySQL中DML的操作,还有MySQL查询语句ds-- MySQLdz中d的约束有: • 非空约束(not null) • 唯一性约束 ...

最新文章

  1. Java网络编程从入门到精通(4):DNS缓存
  2. linux 僵尸进程 defunct
  3. php变量名当文件命_php基础教程 第二步 通俗易懂的学习变量、常量与数据类型...
  4. 简单记录一下使用python pyppeteer爬取努努书坊的爬虫
  5. openSAP中国新平台的介绍
  6. java视频教程不同阶段看哪些
  7. 慕了!网传腾讯《英雄联盟》项目组年终奖每人120万!
  8. IPhone之NSXMLParser的使用
  9. ListView的Item点击事件(消息传递)
  10. Mysql复合索引的顺序和必要值
  11. 算法学习(十九)——A3C
  12. 无刷直流电机换相原理
  13. Chromium内核浏览器编译记(二)UI定制
  14. SA-Siam:用于实时目标跟踪的双重连体网络A Twofold Siamese Network for Real-Time Object Tracking
  15. 2022.1.20-笔记-JSON格式转换(JSON类型str->int\double\string)
  16. 计算机程序结构和解释,SICP 计算机程序的构造和解释
  17. 牛客网练习赛34-A题
  18. 自动驾驶大规模路面图像分类数据集
  19. 网络变压器没有用到的脚
  20. 解决mybatis不加@Parm注解报错问题

热门文章

  1. 漫画:什么是布隆算法?
  2. 图解TCP三次握手和四次挥手!(简单易懂)
  3. java 调用 Oracle 存储过程
  4. TCP、UDP相关协议使用的端口号
  5. python 计量经济 35岁 工作_Python在计量经济与统计学中的应用
  6. 【IDEA】IDEA中使用git将项目上传到码云上
  7. fastai学习——第一个bug
  8. linux db2 权限管理,DB2五种管理权限
  9. 绝地求生7月5日服务器维护,绝地求生7月5日更新到几点 吃鸡更新维护公告
  10. php数组常用_PHP常用数组总结